if ((Opb==0) && (MA_1_t > MA_2_t + Rastvor*Point)) // Если разница между
{ // ..МА 1 и 2 большая
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
Opb++;// Открытие только одного ордера
Ops=0;
if (VKO1>=Ask) {VP=VP*Koff;} // При прибыли предыдущего умножать на коэф.
if (VKO1<Ask) {VP=VP*Koff1;}// При убытке предыдущего умножать на коэф1.
}
if ((Ops==0) && (MA_1_t < MA_2_t - Rastvor*Point)) // Если разница между
{ // ..МА 1 и 2 большая
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
Ops++;// Открытие только одного ордера
Opb=0;
if (VKO0<=Bid) {VP=VP*Koff;} // При прибыли предыдущего умножать на коэф
if (VKO0>Bid) {VP=VP*Koff1;}// При убытке предыдущего умножать на коэф1
}
if ((Opn_S==true)||(Opn_B==true)) // Если есть сигнал на открытие ордера
{// Вычисляем объем умножая на VP
if (AccountBalance()<50000) Vol=Opn_Lots*VP;
if (AccountBalance()>50000) Vol=2*Opn_Lots*VP;
}
не могу понять где ошибка, подскажите, пожалуйста. Говорит "нехватает денег на покупку Lts=1.#INF"
В этом вся и проблема... Количество лотов растет до бесконечности, т.е. повышение объема зациклено, а по коду получается разовое увеличение...
после следует чтобы было понятно см.ниже. и следовательно тоже самое с Sell
Попробуйте
if (Fun_Error(GetLastError())==0) // Нет ошибкиbreak;
Если будет ошибка, то просто на новом тике опять будет пробовать открыть позицию. Кстати мне тут на этом форуме (стр. 90-91) объяснили, что желательно оператором && (и) в if не пользоваться.
paladin80, проблема не в открытии ордера... это работает прекрасно... я скинул эту часть чтобы было понятно, какие переменные из поста от 01.05.12 19:15, где в дальнейшем используются...
проблема в этом (см.ниже), это разовое исполнение, а почему-то Vol увеличивается до бесконечности, следовательно до бесконечности увеличивается Lts... это не понятно... прошу посмотреть пост о котором идет речь и сказать, что не так...
if ((Opn_S==true)||(Opn_B==true)) // Если есть сигнал на открытие ордера
{ // Вычисляем объем умножая на VPif (AccountBalance()<50000) Vol=Opn_Lots*VP;
if (AccountBalance()>50000) Vol=2*Opn_Lots*VP;
}
А проверить, депозит на достаточность ? https://docs.mql4.com/ru/constants/marketinfo
А проверить лот на выхлопе ?
В этом вся и проблема... Количество лотов растет до бесконечности, т.е. повышение объема зациклено, а по коду получается разовое увеличение...
после следует чтобы было понятно см.ниже. и следовательно тоже самое с Sell
это так называемое "разовое" ?
кэп, это же очевидно, тут цикл.
Здравствуйте!
Что-то не могу найти ответа на такой вопрос:
если отложенный ордер исполняется его тип по-прежнему остается типом отложенного ордера, или меняется на OP_BUY или OP_SELL?
В этом вся и проблема... Количество лотов растет до бесконечности, т.е. повышение объема зациклено, а по коду получается разовое увеличение...
после следует чтобы было понятно см.ниже. и следовательно тоже самое с Sell
если отложенный ордер исполняется его тип по-прежнему остается типом отложенного ордера, или меняется на OP_BUY или OP_SELL?
кто нибудь знает, как можно перевести количество пунктов в валюту?
т.е. если профит в единицах валюты, то надо 50 пунктов перевести в эти единицы.. учитывать плечё надо еще наверное?.. 0_о
paladin80, проблема не в открытии ордера... это работает прекрасно... я скинул эту часть чтобы было понятно, какие переменные из поста от 01.05.12 19:15, где в дальнейшем используются...
проблема в этом (см.ниже), это разовое исполнение, а почему-то Vol увеличивается до бесконечности, следовательно до бесконечности увеличивается Lts... это не понятно... прошу посмотреть пост о котором идет речь и сказать, что не так...