[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 1095

 
да еще сразу ненаписал советник без индикаторный вообще нету индикаторов работает тупо по ордерам которые выставляются на покупку и на продажу и так далее--- причем тогда периоды которые менял в тестере советников и конечный результат все равно нечего непонимаю
 
5drakon:
да еще сразу ненаписал советник без индикаторный вообще нету индикаторов работает тупо по ордерам которые выставляются на покупку и на продажу и так далее--- причем тогда периоды которые менял в тестере советников и конечный результат все равно нечего непонимаю

Без самого советника ничего сказать нельзя. Только одни догадки
 

Что делать с Ilan6, чтобы он начал торговать? С какой суммы он начинает работать и работает ли на центовом вобще?

 
5drakon:
да еще сразу ненаписал советник без индикаторный вообще нету индикаторов работает тупо по ордерам которые выставляются на покупку и на продажу и так далее--- причем тогда периоды которые менял в тестере советников и конечный результат все равно нечего непонимаю

Да, надо сам код смотреть. Ведь есть же у него какая-нибудь стратегия, на основе каких вычислений он открывает и закрывает ордера?
 

Подскажите где ошибка? Нужно, чтобы если есть рыночный ордер на продажу по нашему фин. инструменту, то закрыть его и если нет на покупку, то открыть один ордер на покупку. С закрытием то тут всё нормально, а вот открывает он их не один а при каждом тике.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

Подскажите где ошибка? Нужно, чтобы если есть рыночный ордер на продажу по нашему фин. инструменту, то закрыть его и если нет на покупку, то открыть один ордер на покупку. С закрытием то тут всё нормально, а вот открывает он их не один а при каждом тике.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------


Или лучше так сделать? Ведь если ордеров на продажу нет, то и покупки не будет.Подскажите.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

 

Правило исполнения оператора for


При передаче управления оператору for исполнить Выражение_1. Пока Условие оператора for является истинным: передать управление первому оператору тела цикла, а после выполнения всех операторов тела цикла исполнить Выражение_2 и передать управление в заголовок для проверки истинности Условия. Если Условие оператора for является ложным, то: передать управление оператору, следующему за оператором for.

Вот вы мне скажите: пришёл тик, условие оператора for является истинным, управление передаётся дальше - это всё будет происходить во время одного тика т.е. все эти операторы будут исполнен во время прихода 1 тика или нет.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

Или какие именно операторы будут исполнены в этом тике? Все вышеперечисленные или какие то из них будут исполнены во время следующего тика? Объясните...

 
kolyango:

Правило исполнения оператора for


При передаче управления оператору for исполнить Выражение_1. Пока Условие оператора for является истинным: передать управление первому оператору тела цикла, а после выполнения всех операторов тела цикла исполнить Выражение_2 и передать управление в заголовок для проверки истинности Условия. Если Условие оператора for является ложным, то: передать управление оператору, следующему за оператором for.

Вот вы мне скажите: пришёл тик, условие оператора for является истинным, управление передаётся дальше - это всё будет происходить во время одного тика т.е. все эти операторы будут исполнен во время прихода 1 тика или нет.

Или какие именно операторы будут исполнены в этом тике? Все вышеперечисленные или какие то из них будут исполнены во время следующего тика? Объясните...


Функция старт() выполняется при приходе первого тика. Если при работе функции придут другие тики, то они будут пропущены.

Функция старт выполнится полностью согласно заложенной в нее логики

 
kolyango:

Правило исполнения оператора for


При передаче управления оператору for исполнить Выражение_1. Пока Условие оператора for является истинным: передать управление первому оператору тела цикла, а после выполнения всех операторов тела цикла исполнить Выражение_2 и передать управление в заголовок для проверки истинности Условия. Если Условие оператора for является ложным, то: передать управление оператору, следующему за оператором for.

Вот вы мне скажите: пришёл тик, условие оператора for является истинным, управление передаётся дальше - это всё будет происходить во время одного тика т.е. все эти операторы будут исполнен во время прихода 1 тика или нет.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

Или какие именно операторы будут исполнены в этом тике? Все вышеперечисленные или какие то из них будут исполнены во время следующего тика? Объясните...


Разобрался. Все операторы будут исполнены если условие истонное.
 
А как сделать, чтобы в этом коде перед покупкой проверить есть у нас уже ордера на покупку или нет. Если рыночных ордеров на покупку нет, то только тогда выполнить покупку?
Причина обращения: