Так с чего ему таким лотом открывать? Пред идущий 3.4 а коэф 1.9 то лот должен быть 6.46
Функция while
<code>#property copyright "Copyright © 2014, Хлыстов Владимир" #property link "cmillion@narod.ru" #property show_inputs #property strict //-------------------------------------------------------------------- extern int stoploss = 50, //уровень выставления SL, если 0, то SL не выставляется takeprofit = 50, //уровень выставления TP, если 0, то TP не выставляется MaxOrders = 1, //кол-во ордеров Magic = 123456; //уникальный номер ордера extern double LotBuy = 0.1; //объем ордера если 0 то не откоывать extern double LotSell = 0.1; //объем ордера если 0 то не откоывать extern int attempts = 10; //кол-во попыток открытия extern int Slippage = 3; //кол-во попыток открытия string txt; int n,slippage; double STOPLEVEL; //-------------------------------------------------------------------- int start() { STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL); slippage = Slippage; if (Digits==3 || Digits==5) slippage=Slippage*10; for (int i=1; i<=MaxOrders; i++) { if (LotBuy>0) OPENORDER (OP_BUY,NormalizeDouble(Ask,Digits),LotBuy,i); if (LotSell>0) OPENORDER (OP_SELL,NormalizeDouble(Bid,Digits),LotSell,i); } Comment("Скрипт закончил свою работу, выставлено ",n," ордеров "); return(0); } //-------------------------------------------------------------------- void OPENORDER(int ord,double Price,double LOT,int i) { int error,err=0; double SL=0,TP=0; while (true) { error=true; RefreshRates(); if (ord==OP_BUY) { if (takeprofit>=STOPLEVEL) TP = NormalizeDouble(Price + takeprofit*Point,Digits); else TP=0; if (stoploss>=STOPLEVEL) SL = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0; error=OrderSend(Symbol(),OP_BUY, LOT,Price,slippage,SL,TP,"http://cmillion.ru",Magic,0,Blue); } if (ord==OP_SELL) { if (takeprofit>=STOPLEVEL) TP = NormalizeDouble(Price - takeprofit*Point,Digits); else TP=0; if (stoploss>=STOPLEVEL) SL = NormalizeDouble(Price + stoploss*Point,Digits); else SL=0; error=OrderSend(Symbol(),OP_SELL,LOT,Price,slippage,SL,TP,"http://cmillion.ru",Magic,0,Red); } if (error==-1) { txt=StringConcatenate(txt,"\nError ",GetLastError()); if (ord== 1) txt = StringConcatenate(txt," OPENORDER BUY ",i," Ask =",DoubleToStr(Ask,Digits)," Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Price-Ask)/Point,0),") SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((Price-SL)/Point,0),") TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((TP-Price)/Point,0),") STOPLEVEL=",STOPLEVEL); if (ord==-1) txt = StringConcatenate(txt," OPENORDER SELL ",i," Bid =",DoubleToStr(Bid,Digits)," Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Bid-Price)/Point,0),") SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((SL-Price)/Point,0),") TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((Price-TP)/Point,0),") STOPLEVEL=",STOPLEVEL); Print(txt); Comment(txt," ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); err++;Sleep(1000);RefreshRates(); } else { Comment("Ордер ",error," успешно выставлен ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS)); n++; return; } if (err >attempts) return; } return; } //-------------------------------------------------------------------- </code>
<code>//-------------------------------------------------------------------- void OPENORDER(int ord,double Price,double LOT) { int rez,err=0; double SL=0,TP=0; while (true) { rez=true; RefreshRates(); if (ord==OP_BUY) { if (takeprofit>=STOPLEVEL) TP = NormalizeDouble(Price + takeprofit*Point,Digits); else TP=0; if (stoploss>=STOPLEVEL) SL = NormalizeDouble(Price - stoploss*Point,Digits); else SL=0; rez=OrderSend(Symbol(),OP_BUY, LOT,Price,slippage,SL,TP,"http://cmillion.ru",Magic,0,Blue); } if (ord==OP_SELL) { if (takeprofit>=STOPLEVEL) TP = NormalizeDouble(Price - takeprofit*Point,Digits); else TP=0; if (stoploss>=STOPLEVEL) SL = NormalizeDouble(Price + stoploss*Point,Digits); else SL=0; rez=OrderSend(Symbol(),OP_SELL,LOT,Price,slippage,SL,TP,"http://cmillion.ru",Magic,0,Red); } if (rez==-1) { txt=StringConcatenate(txt,"\nError ",GetLastError()); if (ord== 1) txt = StringConcatenate(txt," OPENORDER BUY "," Ask =",DoubleToStr(Ask,Digits)," Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Price-Ask)/Point,0),") SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((Price-SL)/Point,0),") TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((TP-Price)/Point,0),") STOPLEVEL=",STOPLEVEL); if (ord==-1) txt = StringConcatenate(txt," OPENORDER SELL "," Bid =",DoubleToStr(Bid,Digits)," Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Bid-Price)/Point,0),") SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((SL-Price)/Point,0),") TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((Price-TP)/Point,0),") STOPLEVEL=",STOPLEVEL); Print(txt); err++;Sleep(1000);RefreshRates(); } else { Comment("Ордер ",rez," успешно выставлен "); return; } if (err >attempts) return; } return; } //-------------------------------------------------------------------- </code>
<code>//-------------------------------------------------------------------- void OPENORDER_2(int ord,double Price,double LOT) { int rez,err=0; double SL=0,TP=0; while (true) { rez=true; RefreshRates(); if (ord==OP_BUY) rez=OrderSend(Symbol(),OP_BUY, LOT,Price,slippage,0,0,"",Magic,0,Blue); if (ord==OP_SELL) rez=OrderSend(Symbol(),OP_SELL,LOT,Price,slippage,0,0,"",Magic,0,Red); if (rez==-1) { txt=StringConcatenate(txt,"\nError ",GetLastError()); if (ord== 1) txt = StringConcatenate(txt," OPENORDER BUY "," Ask =",DoubleToStr(Ask,Digits)," Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Price-Ask)/Point,0),") SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((Price-SL)/Point,0),") TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((TP-Price)/Point,0),") STOPLEVEL=",STOPLEVEL); if (ord==-1) txt = StringConcatenate(txt," OPENORDER SELL "," Bid =",DoubleToStr(Bid,Digits)," Price =",DoubleToStr(Price,Digits)," (",NormalizeDouble((Bid-Price)/Point,0),") SL =",DoubleToStr(SL,Digits)," (",NormalizeDouble((SL-Price)/Point,0),") TP=",DoubleToStr(TP,Digits)," (",NormalizeDouble((Price-TP)/Point,0),") STOPLEVEL=",STOPLEVEL); Print(txt); err++; Sleep(1000); RefreshRates(); } else { Comment("Ордер ",rez," успешно выставлен "); return; } if (err >attempts) return; } return; } //-------------------------------------------------------------------- </code>
Возможно интегрировать эту таблицу
Это таблица находится в папке с индикаторами?
Мне нужно когда приходит сигнал он смотрит цифру если она 9 то он ставит ордер и так же в любую сторону
Глупо спрашивать: как просчитать это количество.
А вы, чтоб быть объективным, а не голословным, замените в советнике Moving Average код открытия ордера на функцию PutOrder и сравните скорости. Ну если, конечно, умеете. В противном случае — ко мне в топик. Вопросы только обогащают общение.
Меня всегда интересуют причинно-следственные связи.
Простой советник от того и простой. Жаловаться на него, то же, что и на отсутствие зонта во время дождя. Т.е. бесполезно. Человек с колена поделился мыслью. Не нравится — проходи мимо. А если он тебе в жилу, разберись сам, чего понедельник тяжелый день. У меня тоже, как правило.
К стати не смотрел, но уверен: там орднра открываются не таким образом.
А подобных функций валом. Почти один в один. Так как программист я еще тот, то в кодомарании я больше доверяю Хлыстову, чем себе. Так мне жизненный опыт шепчет.
Тут у нас девушка обитает. Почему-то мама OXY назвала. Так вот, ее коды гораздо симпатичнее и продуманнее, чем коды АМ2. Так она тоже не брезгует подобными подходами. Сейчас что-нибудь найду.
Блин. В моем бардаке сходу хрен что найдешь. Попался Хлыстов первым, вот его и взял.
Не важно. Взял пример. Работаю над ним. Кто-то предложит другой вариант (может гораздро лучше) поработаем и с ним. А пока что конкурентции ноль.
Всех благ.
kvashnin007