0
… выставить разнонаправленные отложенные ордера (BuyStop, SellStop) и, после открытия, добавить к ним Трейлингстоп по TakeProfit, StopLoss на определённом расстоянии = если для Вас это сложно, ну тогда какой разговор?… а за платную версию готов заплатить 100 $… *hi* 
avatar

bablusut

  • 28 мая 2018, 00:37
0
Что касается скринов — то всегда пожалуйста, готов ответить на все вопросы, в техзадании кнопка «редактировать» уже исчезла, могу добавить скрины в коментариях:

src=«http://zakaz.opentraders.ru/uploads/images/4/4/3/7/33217/f66b0d36f5.jpg»/>







*hi* 
avatar

bablusut

  • 26 мая 2018, 13:06
0
А что здесь упрощать? В файловой части сайта упрощённых вариантов хоть пруд пруди. Кстати, данный вариант советника существует в тестовой версии, собран по-блочно из кода MQL4 более простых торговых программ находящихся в свободном доступе на сайте, отлично тестируется в тестере, на демо-счёте, и даже на центовом. Отлично работает на одной валютной паре счёта, если поставить на два-три инструмента одного счёта, то начинает барахлить — выставляет цену TakeProfit ордеров одного финансового инструмента, на ордера другого-третьего хаотично… с этим я, со временем, разберусь. а вот хотелось бы увидеть аналогичный код от опытного программиста, так сказать со всеми прибамбасами, «облагороженный» для рыночной торговли на разных счетах, валютах, брокерах и т.д. а заодно и аналогичный вариант для МТ5… готов обсудить платный вариант работы.
<code>int start() {	int Buy, Sell, BuyStop, SellStop, BuyStep, SellStep, summ; 		double - все остальные;
     for(int i=0; i<OrdersTotal(); i++)   { chk=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);	//... прямой пересчёт ордеров.
	if(OrderSymbol()==Symbol() && OrderType()==0)	   	Buy++;	 BuyKoefProfit=Ask+(Koef*Trend-MODE_SPREAD);	BuyStep=Ask+(Step+Tral); 
   	if(OrderSymbol()==Symbol() && OrderType()==1)   	Sell++;	 SellKoefProfit=Bid-(Koef*Trend-MODE_SPREAD);	SellStep=Bid-(Step+Tral); 
    	if(OrderSymbol()==Symbol() && OrderType()==4)   	BuyStop++; 	BuyStopPrice1=Ask+Trend;	BuyStopPrice2=Ask+Tral;
    	if(OrderSymbol()==Symbol() && OrderType()==5)   	SellStop++; 	SellStopPrice1=Bid-Trend;	SellStopPrice2=Bid-Tral;	}</code>


//… 1. всегда должен быть выставлен хотя бы один ордер BuyStop1.
if (BuyStop==0) 	OrderSend(symbol,4,MODE_MINLOT,BuyStopPrice1,0,0,0,0,0);

//… 2. Трейлинг oрдера BuyStop1 вслед за ценой Ask, если между ними нет ордера Buy.
<code>if (BuyStop==1 && Buy==0 && OrderOpenPrice() - Ask > BuyStopPrice)	OrderModify(OrderTicket(),BuyStopPrice1,0,0,0,0);</code>

//… 3. Каждый ордер Buy, с порядковым номером до Koef, должен иметь BuyKoefProfit.
<code>if (Buy<=Koef && OrderTakeProfit()!=BuyKoefProfit) 	OrderModify(OrderTicket(),OrderOpenPrice(),0,BuyKoefProfit,0,0);</code>

//… 4. Цена Ask на расстоянии BuyStep от ближайшего ордера Buy — выставить второй ордер BuyStop2 с увеличенным объёмом.
<code>if (BuyStop==1 && Buy!=0 && OrderOpenPrice()-Ask>=BuyStep) 	OrderSend(symbol,4,Lot=KefLot*Lot,BuyStopPrice2,0,0,0,0,0);</code>

//… 5. Трейлинг ордера BuyStop2 вслед за ценой Ask подобно ордеру BuyStop1.
<code>if (BuyStop==2 && OrderOpenPrice()-Ask>Tral)	OrderModify(OrderTicket(),BuyStopPrice2,0,0,0,0);</code>

//… 6. Каждый ордер Buy, с порядковым номером более Koef, должен иметь BuyProfit.
<code>if (Buy>Koef && OrderTakeProfit()==0)	Lots=Lots+OrderLots(); Summ=Summ+OrderLots()*OrderOpenPrice(); BU=Summ/Lots; BuyProfit=BU+TP;
		OrderModify(OrderTicket(),OrderOpenPrice(),0,BuyProfit,0,0);</code>

//… 7. Закрылся ордер Buy с порядковым номером более Koef+1 — для оставшихся ордеров Buy установить трейлинг по StopLoss.
<code>if (summ<Buy)	summ=Buy; 
	if (summ>Buy && (OrderStopLoss()==0) || (Ask-OrderStopLoss()>Tral))	StopLoss=Ask-Tral;   summ=Buy; 
		OrderModify(OrderTicket(),OrderOpenPrice(),StopLoss,0,0,0); </code>
//… для всех оставшихся ордеров Buy.
//… 8. Закрытие ордеров по OrderStopLoss() и OrderTakeProfit() дублировать принудительным закрытием через OrderClose.
<code>if (Bid>=OrderTakeProfit() )	OrderClose(Buy);
	if (Bid<=OrderStopLoss())	CloseSeries(Buy);</code>

//… 9. Далее всё тоже самое, только применительно для ордеров Sell.
<code>return(0);	}		string Error(int error_code)</code>
avatar

bablusut

  • 26 мая 2018, 12:57