int mag; int start() { bool b,s, //соответственно бай или селл bs,// если закрытие по стоплоссу ордера бай ss,// если закрытие по стоплоссу ордера sell
bt, st;// то же по ТП double bl,sl; // лоты соответсвенно для бай и селл for(int cnt=OrdersHistoryTotal();cnt>0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); {if(OrderMagicNumber()== mag && OrderSymbol()==Symbol()) { if (OrderType() == OP_BUY ) {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*10; break;} if (OrderType() == OP_SELL) {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*10; break;} } } } }//endчуть не в таком виде....
чуть не в таком виде....
спс щя буду пробывать
чуть не в таком виде....
скажите а как зделать после открытия ордера по этим даным очищял даные а то он у меня их открывает на каждом тике
кто подскажет как очистить константы после открытия по ним ордера а то у меня на каждом новом тике открывает по ним ордера
bool b,s, //соответственно бай или селл bs,// если закрытие по стоплоссу ордера бай ss,// если закрытие по стоплоссу ордера sell bt, st;// то же по ТП double bl,sl; // лоты соответсвенно для бай и селл
Ребята!!! помогите справиться с пробелом в знаниях:
мне надо организовать сравнение одного из показателей индикатора Ichimoku Kinko Hyo, а точнее линии Сhinkou Span (Chinkou Span показывает цену закрытия текущей свечи, сдвинутую назад на величину второго временного интервала.) с графиком цены но с тем же отставание. Тоесть пересечение Сhinkou Span снизу вверх ценового графика и наоборот - с верху в низ ценового гарфика. Я решил делать такое сравнение через Moving Average, я сделал минимальный период и получил линию графика цены, ну и пытаюсь сравнить такой Moving Average и линию Сhinkou Span. Но почемуто не выходит. Может кто подскажет как проще это сделать?! или скажем если у меня Сhinkou Span отстает на 23 еденицы то как прописать правильно переменную с Moving Average но с таким же отставанием??
покажу тут как я сам прописал переменные и организовал отставание перем.Moving Average :
double Ten=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_TENKANSEN,1);
double Kij=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_KIJUNSEN,1);
double SpanA=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_SENKOUSPANA,1);
double SpanB=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_SENKOUSPANB,1);
double Chinkou=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_CHINKOUSPAN,1);
double MA=iMA( NULL, 0, 0, 0, int MODE_SMMA, int PRICE_WEIGHTED, int 23);
double Ten1=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_TENKANSEN,2);
double Kij1=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_KIJUNSEN,2);
double SpanA1=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_SENKOUSPANA,2);
double SpanB1=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_SENKOUSPANB,2);
double Chinkou1=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_CHINKOUSPAN,2);
double MA1=iMA( NULL, 0, 0, 0, int MODE_SMMA, int PRICE_WEIGHTED, int 24);
double Ten2=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_TENKANSEN,3);
double Kij2=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_KIJUNSEN,3);
double SpanA2=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_SENKOUSPANA,3);
double SpanB2=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_SENKOUSPANB,3);
double Chinkou2=iIchimoku(NULL, 0,Tenkan, Kijun, Senkou, MODE_CHINKOUSPAN,3);
double MA2=iMA( NULL, 0, 0, 0, int MODE_SMMA, int PRICE_WEIGHTED, int 25);
покажу тут как я сам прописал переменные и организовал отставание перем.Moving Average :
....................................
double MA=iMA( NULL, 0, 0, 0, int MODE_SMMA, int PRICE_WEIGHTED, int 23);
.................................
Если Вы пытались сделать вызов функции, то это неверно: Типы переменных не указываются. Если описание, то оно не может находиться внутри другой функции.
Удачи.
скажите а как зделать после открытия ордера по этим даным очищял даные а то он у меня их открывает на каждом тике
int mag; int start() { bool b,s, bs,// закрытие по стоплоссу ордера бай ss,// закрытие по стоплоссу ордера sell bt, st;// то же по ТП double bl,sl; // лоты соответсвенно для бай и селл if (OrdersTotal()==0) { for(int cnt=OrdersHistoryTotal();cnt>0;cnt--) { OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY); {if(OrderMagicNumber()== mag && OrderSymbol()==Symbol()) { if (OrderType() == OP_BUY ) {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*10; break;} if (OrderType() == OP_SELL) {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*10; break;} } } } } }//end
такой код не будет считывать информацию с истории счета если есть отложенный или открытый любой ордер по любому инструменту. Все объявленные переменные будут равны нулю.
Вообще надо или более точно давать ТЗ или лучше попробывать почитать хелпы к функциям.
Функции очень простые.
такой код не будет считывать информацию с истории счета если есть отложенный или открытый любой ордер по любому инструменту. Все объявленные переменные будут равны нулю.
Вообще надо или более точно давать ТЗ или лучше попробывать почитать хелпы к функциям.
Функции очень простые.
он все считывает! но после открытия ордера он не обнуляет даные и по новой открывает ордера на каждом тике
вот ордер который открыт по переменым,но как зделать чтоб после его открытия даные переменых обнулялись
int NewOrder1(int Cmd,double Lot) {double TP=0; //тейкпрофит double SL=0; //стоплосс double PR=0; //Цена double LT=0; //Лот while(!IsTradeAllowed()) Sleep(100); if(Cmd==OP_BUYLIMIT) {PR=Ask-Point*h; if(TakeProfit>0) TP=PR+TakeProfit*Point; if(StopLoss>0) SL=PR-StopLoss*Point; if(Lot>0) LT=3*Lot;} int tic1=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE); //----------- if(tic1<0) Print(GetLastError()); if(tic1>0){ b=0;s=0; //соответственно бай или селл bs=0;// если закрытие по стоплоссу ордера бай ss=0;// если закрытие по стоплоссу ордера sell bt=0; st=0;// то же по ТП bl=0;sl=0; // лоты соответсвенно для бай и селл } //----------- return(tic1);}
сами переменые установлены у меня вот так
#property copyright "Copyright © 2010, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" extern int TakeProfit=18; extern int StopLoss=18; extern double Lot=0.01; extern int StartTime=0; int Today=0; int h=10; int h1=26; int mag=777; bool b=0; bool s=0; //соответственно бай или селл bool bs=0;// если закрытие по стоплоссу ордера бай bool ss=0;// если закрытие по стоплоссу ордера sell bool bt=0; bool st=0;// то же по ТП double bl=0; double sl=0; // лоты соответсвенно для бай и селл //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() {
Скажите пожалуста в чем проблема, после закрытия рыночного ордера должен устанавливатся новый отложеный ордер он устанавливается, но не прекращяет это действие а открывает дальше на каждом новом тике!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
народ помогие релизовать этого оператоа хотябы кто что знаем и чем может помоч