Пишу советник. Ничего нового пока. Нужна помощь профи. Не открываются ордера. - страница 4

 
a007 #:

Если у Вас есть стратегия разруливания локов - то до грааля всего один шаг. А именно: Открываем два встречных ордера одинаковым лотом. Естественно, при любом движении цены один идет в плюс, другой в минус. Когда плюс достигает критического значения, закрываем плюс и получаем прибавку к депозиту. Открываем новый лок. Если цена оказывается внутри лока, открываем два встречных ордера с тем же лотом. Таким образом, разрезаем лок на два меньших. Когда накопившаяся прибыль превысит убыток самого меньшего лока, закрываем оба его ордера. Таким образом, прибыль растет а локи постепенно безболезненно закрываются. Чтобы убедиться, могу написать такой советник. Желательно через фриланс. Могу и бесплатно... Нужны параметры: Через сколько закрывать, когда разрезать...


сразу мой пардон за мое вклинивание в диалог умных мужей, но по такой стратегии доков есть таки один маленький и довольно не приятный нюанс. Удерживая дальше ушедший в минус ордер счёт начинает накапливать ещё и свопы (дай Бог, что бы они были положительными) - ведь мало верится, что такой ордер посчастливится закрыть в ближайшие пару-тройку дней. И разве эту стратегию не ждёт "кочерга"?
 
kvashnin007 #:

Роман, Вы о моем первом вопросе, или о Gap_EA? Если о втором, то ночной гэп появляется при спреде *50. Гэп 100 пипсов, а спред 150.  Логика в том, что гэп, практически всегда, закрывается. Т.е. тэйк - 100 пипсов. А Buy закрывается  Bidом. Т.е. тейк должен быть больше 150 (это к вопросу проверки по спреду). Ну если, конечно, брокер не возвращает сред. Кстати. Я не помню, какой из вариантов советника у меня крайний. В смысле рабочий. Кинул, что попалось.

 И еще. Нерабочий советник тоже может открывать и закрывать ордера. Так же, как тестер не является мерилом работоспособности. Я плохой программист. Проблемы не в формализации логики советника, а в элементарных, иногда, вещах. Н.п. ордер закрывается с ошибкой или не модифицируется, хотя, вроде все по фэншую.

Роман, меня больше интересует первый вопрос темы: почему не открываются послестартовые ордера? Почему рассчитанный лот может (и делает это, падла) минусовые значения? Из-за этой истории, я тормознулся Переписал советник в другом виде, а результат тот же.

Дак вот я об этом и писал, что надо принтами печатать и узнавать значения переменных - в частности объема позиции (а вообще и других) и уже тогда видно будет, какая переменная имеет не правильное значение для открытия позиции...

как - то так...  вообще у вас может и логика открытия дополнительных позиций не работает исправно - туда выполнение программы не доходит и в условие открытия доп позиции не заходит, следовательно она и не будет открываться...

программировать и искать ошибку вот что надо.... Тут логика - прямая! 

 
kvashnin007 #:

Роман, Вы о моем первом вопросе, или о Gap_EA? Если о втором, то ночной гэп появляется при спреде *50. Гэп 100 пипсов, а спред 150.  Логика в том, что гэп, практически всегда, закрывается. Т.е. тэйк - 100 пипсов. А Buy закрывается  Bidом. Т.е. тейк должен быть больше 150 (это к вопросу проверки по спреду). Ну если, конечно, брокер не возвращает сред. Кстати. Я не помню, какой из вариантов советника у меня крайний. В смысле рабочий. Кинул, что попалось.

 И еще. Нерабочий советник тоже может открывать и закрывать ордера. Так же, как тестер не является мерилом работоспособности. Я плохой программист. Проблемы не в формализации логики советника, а в элементарных, иногда, вещах. Н.п. ордер закрывается с ошибкой или не модифицируется, хотя, вроде все по фэншую.

Роман, меня больше интересует первый вопрос темы: почему не открываются послестартовые ордера? Почему рассчитанный лот может (и делает это, падла) минусовые значения? Из-за этой истории, я тормознулся Переписал советник в другом виде, а результат тот же.

в идеале надо заказывать во фрилансе, хотя если заинтересует может и здесь сделаю, например, в ветке "напишу советник бесплатно" или ветка "выходного дня": 


 
Roman Shiredchenko #:

Дак вот я об этом и писал, что надо принтами печатать и узнавать значения переменных - в частности объема позиции (а вообще и других) и уже тогда видно будет, какая переменная имеет не правильное значение для открытия позиции...

как - то так...  вообще у вас может и логика открытия дополнительных позиций не работает исправно - туда выполнение программы не доходит и в условие открытия доп позиции не заходит, следовательно она и не будет открываться...

программировать и искать ошибку вот что надо.... Тут логика - прямая! 

Роман, день добрый. Я не совсем первый раз. В смысле - женился. То о чем Вы мне говорите - это уже стало классикой. Я так думаю. Вы мне скажите лучше почему рассчитанные ордера, принимают отрицательное значение. Программа, вроде, по фэншую. Ну где я пЛОХ?

 
Shoker #:


сразу мой пардон за мое вклинивание в диалог умных мужей, но по такой стратегии доков есть таки один маленький и довольно не приятный нюанс. Удерживая дальше ушедший в минус ордер счёт начинает накапливать ещё и свопы (дай Бог, что бы они были положительными) - ведь мало верится, что такой ордер посчастливится закрыть в ближайшие пару-тройку дней. И разве эту стратегию не ждёт "кочерга"?

Я бы сказал: мудрых. ДОБРЫЙ ДЕНЬ.

Если Вы заметили диалог не получается. Замки - тема интересная и сложная. Отрицательный замок - это чтоб сохранить убыток. Типа - потом подумаю, а реально - медленно буду зарабатывать и постепенно закрою замок. Итог тот же, что сразу согласились с убытком и  медленно зарабатывать и постепенно перекрыть уже полученный убыток. Только за свопы не не надо платить. И не забывайте за психологию. Это рассуждение верно. Но если не умеешь быстро ликвидировать замки. Тем более, еще и хорошо на них зарабатывать. 

 
Roman Shiredchenko #:

в идеале надо заказывать во фрилансе, хотя если заинтересует может и здесь сделаю, например, в ветке "напишу советник бесплатно" или ветка "выходного дня": 


Советник бесплатно - понты, а ветку выходного дня как найти?

Нашел. Это просто. А вот что дальше, вопрос...

 
kvashnin007 #:

Роман, день добрый. Я не совсем первый раз. В смысле - женился. То о чем Вы мне говорите - это уже стало классикой. Я так думаю. Вы мне скажите лучше почему рассчитанные ордера, принимают отрицательное значение. Программа, вроде, по фэншую. Ну где я пЛОХ?

Вот здесь проверку сделайте  и распечатайте значения 

        
 
    if(s>0 &&  


LotS*2-LotB 


> 0)
                                     // Если есть ордера Sell            BuyLot=NormalizeDouble((LotS*2-LotB),2); // Лотов Buy должно быть в 2 раза больше, чем Sell          //---          if(b>0 &&
LotB*2-LotS >0)
                                  // Если есть ордера Buy              SelLot=NormalizeDouble((LotB*2-LotS),2); // Лотов Sell должно быть в 2 раза больше, чем Buy          //-------- Проверяем на превышение и корректность--------------------------------------------          if(BuyLot>MaximalLots)      BuyLot=MaximalLots;          if(SelLot>MaximalLots)      SelLot=MaximalLots;

если LotB*2-LotS > 0 

и если 

LotB*2-LotS > 0


также проверку сделайте на минималку, например:

 if(BuyLot < MinimumLots)      BuyLot= MinimumLots




MinimumLots
MinimumLots
;
 
kvashnin007 #:

Роман, день добрый. Я не совсем первый раз. В смысле - женился. То о чем Вы мне говорите - это уже стало классикой. Я так думаю. Вы мне скажите лучше почему рассчитанные ордера, принимают отрицательное значение. Программа, вроде, по фэншую. Ну где я пЛОХ?

добавьте условия: 

если LotB*2-LotS > 0 

и если 

LotB*2-LotS > 0


также проверку сделайте на минималку, например:

 if(BuyLot < MinimumLots)      BuyLot= MinimumLots

 
kvashnin007 #:

Советник бесплатно - понты, а ветку выходного дня как найти?

Нашел. Это просто. А вот что дальше, вопрос...

https://www.mql5.com/ru/forum/233860

Вечер выходного дня
Вечер выходного дня
  • 2018.03.31
  • www.mql5.com
В этой теме исключительно на выходных принимаются заявки на "быстро забацать MQL5 советника...
 
Roman Shiredchenko #:

Вот здесь проверку сделайте  и распечатайте значения 

если LotB*2-LotS > 0 

и если 


также проверку сделайте на минималку, например:

Роман, не поверите. Делал. В первом цикле, где суммарный лот определяется, печатает нормальный лот.

if(s>0)                                    // Если есть ордера Sell 
           BuyLot=NormalizeDouble((LotS*2-LotB),2); // Лотов Buy должно быть в 2 раза больше, чем Sell

Здесь если лот <=0 принт ошибка лота. Таки пишет в журнал ошибку. А ПОЧЕМУ лот не определяется? Отсюда и остановка. 

Причина обращения: