Помогите написать код. - страница 2 1234 Новый комментарий rlx 2011.06.17 09:04 #11 Т.е. если код для обработки (вашей задумки) будет внутри советника, который будет торговать по сигналам. [Удален] 2011.06.17 09:05 #12 //=========================== Обязательный блок ===================================+ if (!ExistOrders("0", OP_BUYSTOP, Magic,0)) { if( p2 != PriceOpenLastPos("0", OP_BUY, Magic)) { if (p2 != PriceOpenLastClosePos("0", OP_BUY, Magic)) { //+=================================================================================+ // Проверка условий для совершения сделки бай if( Сигнал ) { SL=0;TP=0; if(StopLoss>0) SL=Bid - StopLoss* Point; // StopLoss (цена) if(TakeProfit>0) TP=Bid + TakeProfit*Point; // TakeProfit (цена) lots=LotsCounting(); ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,p2,3,SL,TP,"Покупаем- хи-хи ",Magic,0,Magenta); if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } } } } //======================== конец блока открытия позиций ============================+ [Удален] 2011.06.17 09:07 #13 Ну да, это все один советник. Просто у меня 2 отдельных советника, один для сигналов "Вверх", второй - "Вниз" rlx 2011.06.17 09:10 #14 Т.е есть сигнал на покупку. То вход происходит не по рынку, а отложенником. Потом если отложенник Бай сработал, нужно выставить отложенник селл (локирующий). Если отложенник селл сработает, то при достижении профита (сработавшего Селла) больше 50 пунктов переводить его в безубыток. Если позиция бай закрыта, то отменять отложенник селл, или же закрывать Селл, который сработал. ТАк? Automated Trading Championship 2010 Лавина [Архив]учитесь зарабатывать селяне![Архив] rlx 2011.06.17 09:11 #15 Это для случая торговли Вверх [Удален] 2011.06.17 09:11 #16 Все это дело выглядит так: //=========================== Открытие позиций ===================================+ if (!ExistOrders("0", OP_BUYSTOP, Magic,0)) { if( p2 != PriceOpenLastPos("0", OP_BUY, Magic)) { if (p2 != PriceOpenLastClosePos("0", OP_BUY, Magic)) { //+=================================================================================+ // Проверка условий для совершения сделки бай if( Сигнал ) { SL=0;TP=0; if(StopLoss>0) SL=Bid - StopLoss* Point; // StopLoss (цена) if(TakeProfit>0) TP=Bid + TakeProfit*Point; // TakeProfit (цена) lots=LotsCounting(); ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,p2,3,SL,TP,"Покупаем- хи-хи ",Magic,0,Magenta); if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } } } } //======================== конец блока открытия позиций ============================+ //========================== Закрытие позиций ======================================+ for ( int v = OrdersTotal() - 1; v >= 0; v -- ) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if (OrderType() == OP_BUYSTOP) { if( Сигнал ) { ModifyOrder(p2, SL, TP, Red); } } } // Symbol() } // select } //total //============================== Конец блока закрытия ==============================+ //+================================= TrailingStop ==================================+ for ( int z = OrdersTotal() - 1; z >= 0; z -- ) { if (OrderSelect(z, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType() == OP_BUY) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue); } } } } // Symbol() } // select } //total //+================================= TrailingStop ==================================+ //+==================================== Замок ======================================+ for ( int y = OrdersTotal() - 1; y >= 0; y -- ) { if (OrderSelect(y, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType() == OP_BUY) { if (!ExistOrders("0", OP_SELLSTOP, Magic,0) && ( PriceOpenLastPos("0", OP_BUY, Magic)-Point*200 != PriceOpenLastPos("0", OP_SELL, Magic))/* && (PriceOpenLastPos("0", OP_SELL, Magic)-Point*200 != PriceOpenLastClosePos("0", OP_sel, Magic))*/) { if (Close[2] > PriceOpenLastPos("0", OP_BUY, Magic)-Point*200) { lots=LotsCounting(); ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,PriceOpenLastPos("0", OP_BUY, Magic)-Point*200,3,SL,TP,"Покупаем- хи-хи ",Magic,0,Magenta); if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } } } if (ExistPositions("0", OP_BUY, Magic) == false) { if (OrderType() == OP_SELLSTOP) { OrderDelete(OrderTicket()); // закрываем позицию } } } //if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) } //if (OrderSelect(y, SELECT_BY_POS, MODE_TRADES)) } //for ( int y = OrdersTotal() - 1; y >= 0; y -- ) //+================================= TrailingStop ==================================+ //+==================================== Замок ======================================+ for ( int h = OrdersTotal() - 1; h >= 0; h -- ) { if (OrderSelect(h, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) if(OrderType() == OP_SELL) { if(OrderOpenPrice()-Ask > Point*Lock) { OrderModify(OrderTicket(),OrderOpenPrice(),PriceOpenLastPos("0", OP_BUY, Magic)-Point*200,OrderTakeProfit(),0,Blue); } } // Symbol() } // select } //total [Удален] 2011.06.17 09:13 #17 rlx: Т.е есть сигнал на покупку. То вход происходит не по рынку, а отложенником. Потом если отложенник Бай сработал, нужно выставить отложенник селл (локирующий). Если отложенник селл сработает, то при достижении профита (сработавшего Селла) больше 50 пунктов переводить его в безубыток. Если позиция бай закрыта, то отменять отложенник селл, или же закрывать Селл, который сработал. ТАк? Ну както так, только нужно чтоб локирующий отложник существовал все время пока есть позиция бай. rlx 2011.06.17 09:28 #18 Что за цена p2. ?? Её рассчитывает алгоритм торговли. Каждый раз когда есть if( Сигнал ) нужно чтобы по цене p2 открывался отложенник, если по этой цене уже не произошел вход. ?? rlx 2011.06.17 09:31 #19 Открываться могут несколько позиций вверх. Но при этом: 1) Открываются они поэтапно. Закрываются они разом и все. или 2) каждая позиция бай может быть закрыта в свое определенное время. Тогда есть ли переменная которая определяет, какую позицию бай надо закрыть. Вопросы от "чайника" Спрашивайте! В чем может быть rlx 2011.06.17 09:33 #20 Т.е. если есть переменная какую позицию надо открыть, Например та же p2 И при этом есть переменная по которой известно которую позицию Бай надо закрыть (та же p2) Тогда каждый блок (БАй, СеллСтоп, селл) можно идентифицировать по этой переменной p2 Это для случая торговли Вверх [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой Первая священная корова: "Если MT4. Вопрос по написанию 1234 Новый комментарий
Т.е есть сигнал на покупку. То вход происходит не по рынку, а отложенником.
Потом если отложенник Бай сработал, нужно выставить отложенник селл (локирующий).
Если отложенник селл сработает, то при достижении профита (сработавшего Селла) больше 50 пунктов переводить его в безубыток.
Если позиция бай закрыта, то отменять отложенник селл, или же закрывать Селл, который сработал.
ТАк?
Все это дело выглядит так:
Т.е есть сигнал на покупку. То вход происходит не по рынку, а отложенником.
Потом если отложенник Бай сработал, нужно выставить отложенник селл (локирующий).
Если отложенник селл сработает, то при достижении профита (сработавшего Селла) больше 50 пунктов переводить его в безубыток.
Если позиция бай закрыта, то отменять отложенник селл, или же закрывать Селл, который сработал.
ТАк?
Ну както так, только нужно чтоб локирующий отложник существовал все время пока есть позиция бай.
Что за цена p2. ??
Её рассчитывает алгоритм торговли.
Каждый раз когда есть if( Сигнал ) нужно чтобы по цене p2 открывался отложенник, если по этой цене уже не произошел вход.
??
Открываться могут несколько позиций вверх.
Но при этом: 1) Открываются они поэтапно. Закрываются они разом и все.
или 2) каждая позиция бай может быть закрыта в свое определенное время. Тогда есть ли переменная которая определяет, какую позицию бай надо закрыть.
Т.е. если есть переменная какую позицию надо открыть, Например та же p2
И при этом есть переменная по которой известно которую позицию Бай надо закрыть (та же p2)
Тогда каждый блок (БАй, СеллСтоп, селл) можно идентифицировать по этой переменной p2
Это для случая торговли Вверх