Вот советник. он открывает позицию по фраактала вверх\вниз. Как сделать чтобы стоп находился на 5 п. выше (если BUY), и на 5 п. ниже (если SELL) от вершины фрактала???
P_up0=iCustom(0,0,"Ценовой канал",Chperiod,0,0);
P_down0=iCustom(0,0,"Ценовой канал",Chperiod,1,0);
P_up1=iCustom(0,0,"Ценовой канал",Chperiod,0,1);
P_down1=iCustom(0,0,"Ценовой канал",Chperiod,1,1);
Up=iCustom(0,0,"olyakish_fractals_02(для Skonti)",15,150,"Процент для отсеивания по объему",110,1,3);
Down=iCustom(0,0,"olyakish_fractals_02(для Skonti)",15,150,"Процент для отсеивания по объему",110,3,3);//задали все данные
total=OrdersTotal();if(total<1){// Проверка свободной маржиif(AccountFreeMargin()<(1000*Lots)){Print("We have no money. Free Margin = ",AccountFreeMargin());return(0);}// Условие открытие позиции BUYif(Up>Down){
Lots=GetSizeLot();
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",16384,0,Green);if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());}elsePrint("Error opening BUY order : ",GetLastError());return(0);}// Условие открытие позиции SELLif(Up<Down){
Lots=GetSizeLot();
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",16384,0,Red);if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());}elsePrint("Error opening SELL order : ",GetLastError());return(0);}return(0);}for(cnt=0;cnt<total;cnt++){OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()){if(OrderType()==OP_BUY)// длинная позиция открыта{// условие закрытие длинной позицииif(P_down1>P_down0||Up<Down){OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);return(0);}if(TrailingStop>0){if(Bid-OrderOpenPrice()>Point*TrailingStop){if(OrderStopLoss()<Bid-Point*TrailingStop &&OrderStopLoss()!=OrderOpenPrice()+X*Point){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+X*Point,OrderTakeProfit(),0,Green);return(0);}}}}else{// условие закрытия короткой позицииif(P_up1<P_up0||Up>Down){OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);return(0);}if(TrailingStop>0){if((OrderOpenPrice()-Ask)>(Point*TrailingStop)){if(NormalizeDouble(OrderStopLoss(),Digits)!=NormalizeDouble(OrderOpenPrice()-X*Point,Digits)){OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-X*Point,OrderTakeProfit(),0,Red);return(0);}}}}}}return(0);}
все вопросы разрешаем экспериментом - пишем скрипт, запyскаем, - видим следующие отличия стандартного iFractals() 1. Индикатор по индексу фрактала в точности равен Хай/Лоу 2. несуществующее значение фрактала ==0
int i;double f;for(i=0;i<50;i++){f=iFractals(NULL,0,MODE_UPPER,i);if(f!=0)break;}
Alert(f," ",High[i]," i=",i);
P.S. ищем назад от позиции этим циклом, на моментоткрытия позиции, запоминаем
непонятно что значит вызвать, в глобальных переменных программы -запомнили время бара фрактала открытия позиции, по времени бара через iBars() знаем номер бара -запомнили цену фрактала -запомнили вверх/вниз и что тогда вызывать еще раз?
записываем ближайший фрактал при открытии ордера бай
int i; double f;
if(ticket>0){if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){Print("BUY order opened : ",OrderOpenPrice());for(i=0;i<50;i++){f=iFractals(NULL,0,MODE_UPPER,i);if(f!=0)break;}
UfractalBuy=High[i];for(i=0;i<50;i++){f=iFractals(NULL,0,MODE_LOWER,i);if(f!=0)break;}
LfractalBuy=Low[i];}}
ой :-)
спасибо!
Здравствуйте знатоки!
Вот советник. он открывает позицию по фраактала вверх\вниз. Как сделать чтобы стоп находился на 5 п. выше (если BUY), и на 5 п. ниже (если SELL) от вершины фрактала???
Здесь я использовал Ценовой канал.
иУ меня вызывает затруднение обозначить L или H фрактала по которому открылась позиция!
примерно так?!!??
поэтому умножаем на цену младшего разряда
Здесь я ошибся. Спасибо.
На как задать вершину фрактала по которому открылась позиция????
- видим следующие отличия стандартного iFractals()
1. Индикатор по индексу фрактала в точности равен Хай/Лоу
2. несуществующее значение фрактала ==0
P.S. ищем назад от позиции этим циклом, на моментоткрытия позиции, запоминаем
в глобальных переменных программы
-запомнили время бара фрактала открытия позиции, по времени бара через iBars() знаем номер бара
-запомнили цену фрактала
-запомнили вверх/вниз
и что тогда вызывать еще раз?
выше всех блоков
записываем ближайший фрактал при открытии ордера бай
вводим еще одно условие зарытия ордера бай