Re: Советник Ilan 1.6 Dynamic
Цитата:
Сообщение от lout
Вот по этой причине хочется запилить (найти) советник, выставляющий ордера отложенные, а не по рынку. Так сразу было бы видно, какой ордер будет открыт по достижению той или иной цены. Красота! Valsorya, как думаешь, возможно такой сварганить?
|
Продать Вам что ли кусок кода своего?
int Magic=1; // Магик номер ордеров
int TakeProfit = 1000; //отступ в п. от цены для отложеников
int StopLoss = 1000;
int init(){
if (Digits < 4) {
pp = 0.01;
pd = 2;
cf = 0.009;
} else {
pp = 0.0001;
pd = 4;
cf = 0.00009;
}} // доп расчеты для 4/5-ти знаков
//+--------------------------------------------------------------------------------------------------------------+
//| Сам склепал! выставляет 2 отложеника от цены!
//+--------------------------------------------------------------------------------------------------------------+
void set2stoporders(double Lots,int magic, bool BuyMe, bool SellMe) // лот открытия ордеров, BuyMe/SellMe = ставить отложеники на бай или селл(решается присвоением true/false)
{
//+--------------------------------------------------------------------------------------------------------------+
double ldStop=0, ldTake=0;
int TakeProfit=1000;int StopLoss=1000;
int delta_open_order=MarketInfo(Symbol(), MODE_SPREAD);// Определяем спред на паре
if (BuyMe==true){double pAsk=Ask+delta_open_order*Point;
if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
SetOrder(OP_BUYSTOP,pAsk,ldStop,ldTake,Lots,delta_ open_order,magic);
}else{double pBid=Bid-delta_open_order*Point;
if (StopLoss!=0) ldStop=pBid+StopLoss*Point;
if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
SetOrder(OP_SELLSTOP,pBid,ldStop,ldTake,Lots,delta _open_order,magic);
}}
//+------------------------------------------------------------------+
//| Установка ордера |
//| Параметры: |
//| op - операция |
//| pp - цена |
//| ldStop - уровень стоп |
//| ldTake - уровень тейк |
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake,double LLots,int Slippage_ee,int magic) {
color clOpen; int NumberOfTry=3;
color clOpenBuy = LightBlue; // Цвет ордера BuyStop
color clOpenSell = LightCoral; // Цвет ордера SellStop
if (op==OP_BUYSTOP) {clOpen=clOpenBuy;}
else {clOpen=clOpenSell;}
for (int it=1; it<=NumberOfTry; it++)
{
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
while (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
bool FM=OrderSend(Symbol(),op,LLots,pp,2,ldStop,ldTake, "ATC SS",magic,0,clOpen);
}
}