Закрытие половинных участков. - страница 6

 
Вы имеете в виду, если я поставлю "if(FirstTarget_Buy == Bid)"? (Очевидно, что нет, так как это не работает).
 
DomGilberto:
Вы имеете в виду, если я поставлю "if(FirstTarget_Buy == Bid)"? (Очевидно, что это не так, поскольку это не работает).

Или что-то вроде ...

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   //  close the Order
   }

... помня о проблемах сравнения двойников ( может ли цена != цена ? ).

Вам также нужно подумать о спреде и о том, включает ли ваша цель спред или исключает его.

 

(Хорошо - Спасибо за помощь, Раптор! Это становится удручающим. Клянусь, это не должно отнимать столько времени... Это утверждение If выше не работает.

Честно говоря, я в растерянности...

Он закроет несколько половин (половину половины половины половины половины и т.д.), если я не включу это утверждение "if" выше (в этом случае ничего не произойдет), а просто поставлю порядок закрытия на "Bid" - я не могу понять, как он узнает, когда закрыть эту половину...

Любые другие предложения будут высоко оценены, спасибо за помощь!

 
DomGilberto:

(Хорошо - Спасибо за помощь, Раптор! Это становится удручающим. Клянусь, это не должно занимать столько времени... Это утверждение If выше не работает.

Честно говоря, я в растерянности...

Он закроет несколько половин (половину половины половины половины половины и т.д.), если я не включу это утверждение "if" выше (в этом случае ничего не произойдет), а просто поставлю closeorder на "Bid" - я не могу понять, как он узнает, когда закрыть эту половину...

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

Оператор if будет работать ... если он не работает, добавьте Print() перед ним ... и после него.

Print("Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

   //  close the Order
   }

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

 
Хорошо, спасибо! Не могли бы вы также просветить меня, почему иногда я запускаю ST, затем останавливаю его и ничего не выводится в журнале...?

" когда у вас есть код, работающий так, как вы хотите, и вы запускаете его в тестере стратегий и обнаруживаете, что он примерно так же хорош, как бросок монеты".

Да, я могу только представить! На самом деле мне удалось написать 6 страниц (не уверен, сколько это строк) примерно кода - я добавляю эти критические части... одна из которых закрывает 50% при 1:1 и переходит в безубыток...
 
DomGilberto:
Хорошо, спасибо! Не могли бы вы также просветить меня, почему иногда я запускаю ST, затем останавливаю его, а в журнале ничего не выводится...?

Вы просматриваете правильную вкладку журнала? Их две... та, которую вы должны просматривать в окне тестера стратегий, и та, которую вы должны просматривать рядом с вкладкой экспертов. Лучший способ - посмотреть файл журнала, сохраненный в tester\logs.

 
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 10
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
   if(OrderType()==OP_BUY && Bid >= FirstTarget_Buy +(Point / 2)){
                  Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );
                  bool Close_Half_Order_Buy = OrderClose(OrderTicket(),half,Bid,3,CLR_NONE);
                  if(Close_Half_Order_Buy!=TRUE)Print("Close_Half_Order_Buy Last Error = ", GetLastError());
                  }
Это идеально - значение firsttarget_buy точно правильное. Количество лотов для закрытия точно правильное. Все это печатается на отложенном ордере - Однако, он не закрывается по этой цене, хотя я рассчитал ее правильно? Я выбираю его, когда он является "OP_BUY"... Извините, что задаю все эти вопросы, но я не понимаю, почему это не работает?
 
DomGilberto:
Это идеально - Firsttarget_buy точно правильное значение. Количество лотов для закрытия точно соответствует действительности. Все это печатается на отложенном ордере - Однако, он не закрывается по этой цене, хотя я рассчитал ее правильно? Я выбираю его, когда он является "OP_BUY"... Извините, что задаю все эти вопросы, но я не понимаю, почему это не работает?

Вы не добавили print перед if( . . . . .

Print("Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );   //  add this line too . . .

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

   //  close the Order
   }

... без него как вы узнаете, что Bid был больше или равен FirstTarget_buy ? если это не так, то if() не истина и ордер не частично закрыт ... и если это все еще отложенный ордер, то это не OP_BUY.

 
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Current Bid: 1.35972 FirstTarget_Buy: 1.37931
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000

Я вижу, когда ставка равна или больше, чем "FirstTarget_buy"? Я тестирую на сделке, которая проходит весь путь до цели тейкпрофита с соотношением вознаграждения 2:1... Так что я знаю, что она идет 1:1 вознаграждение - Что является тем, где лоты должны быть уменьшены наполовину... Все функции печати печатаются на отложенных ордерах (т.е. если есть отложенный ордер и я останавливаю тест, все отпечатки появляются - однако, если я останавливаю тест после срабатывания одного из отложенных ордеров, в журнале ничего не печатается в терминах "Печать")?

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

(обновление: я предполагаю, что мне нужно отслеживать Bid на основе тика за тиком, чтобы протащить цену через мой цикл "for"?

Чтобы утверждение "IF()" было истинным, Bid в конечном итоге будет равен моей "FirstTarget_buy"?

 
DomGilberto:

Я вижу, когда ставка равна или больше, чем "FirstTarget_buy"? Я тестирую на сделке, которая проходит весь путь до цели тейкпрофита с соотношением вознаграждения 2:1... Так что я знаю, что она идет 1:1 вознаграждение - Что является тем, где лоты должны быть уменьшены наполовину... Все функции печати печатаются на отложенных ордерах (т.е. если есть отложенный ордер и я останавливаю тест, все отпечатки появляются - однако, если я останавливаю тест после срабатывания одного из отложенных ордеров, в журнале ничего не печатается в терминах "Печать")?

Хорошо, теперь вы делаете успехи ... вам просто нужно выяснить, почему OP_BUY не запускает ваш код, который печатает все переменные так же, как отложенный ордер... если вы хотите опубликовать этот код, я посмотрю.