Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Помогите - как модифицировать советника, чтобы оставить существующие сделки открытыми
Мне нужно довольно простое решение, если кто-то может помочь.
У меня есть советник, который сейчас прибыльный, но он открывает сделки и закрывает сделки одновременно, так что только 1 сделка активна в любой момент времени.
Теперь я хочу запустить его на существующем счете, на котором уже открыто несколько сделок, я хочу оставить эти сделки в работе, но чтобы советник продолжал открывать и закрывать свои собственные сделки, в качестве побочного вопроса, когда любая из существующих сделок становится прибыльной, он затем закрывает их.
Этот побочный запрос на закрытие существующих сделок при получении прибыли можно проигнорировать, если это упростит процесс, я могу закрыть их вручную, если потребуется.
Вот что использует мой советник в данный момент
if(val1 > val2) {trade_text = " Открыта сделка BUY";trend_text = "UP";BV=1;break;}
if(val1 < val2) {trade_text = " Открыта сделка SELL";trend_text = "DOWN";SV=1;break;}}
// экспертное управление капиталом
if(MM){if(Risk100){Comment("Invalid Risk Value.");return(0);}
else{MML=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);}}
if(MM==false){MML=Lots;}
// инициализация позиций эксперта
int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if((OrderType()==OP_SELL||OrderType()==OP_BUY)&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0))OP=OP+1;}
if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;// условия эксперта для открытия позиции
if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}
// экспертные условия для закрытия позиции
if((SV>0)||(RealSL_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0)||(RealSL_Enabled&&&(Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0))
{if(CB==1){OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Aqua);temp = Bid;return(0);}}
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){
if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Gold);temp = Bid;return(0);}}}double SLI=0,TPI=0;int TK=0;
// значение открытой позиции эксперта
if((AddP()&&Add_Positions&&OP<=MaxOrders)||(OP==0&&!Add_Positions)){
if(OS==1){if(TP==0)TPI=0;else TPI=Bid-TP*Point;if(SL==0)SLI=0;else SLI=Bid+SL*Point;OS=0;return(0);}
if(OB==1){if(TP==0)TPI=0;else TPI=Ask+TP*Point;if(SL==0)SLI=0;else SLI=Ask-SL*Point;{TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip,SLI,TPI,OrSt,Magic,0,Blue);OB=0;return(0);}}
for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){if(OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){TrP();}}}return(0);}
// экспертное количество ордеров
int CntO(int Type,int Magic){int _CntO;_CntO=0;
for(int j=0;j<OrdersTotal();j++){OrderSelect(j,SELECT_BY_POS,MODE_TRADES);if(OrderSymbol()==Symbol()){if((OrderType()==Type&&(OrderMagicNumber()==Magic)||Magic==0))_CntO++;}}return(_CntO);}
//эксперт безубыточен
void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);if(OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(),MODE_BID);
if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp);}}}
// экспертный трейлинг-стоп
if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);return;}}}}
if(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol(),MODE_ASK);if(BE>0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}
if(TS>0){if(OrderOpenPrice()-pa>TS*pp){if(OrderStopLoss()>pa+(TS+TS_Step-1)*pp||OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}}
//экспертный стоплосс
void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE);}
//функция добавления позиций
bool AddP(){int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol()&&OrderType()<3&&&((OrderMagicNumber()==Magic)||Magic==0)){
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();}}if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}
/*
// условия эксперта для закрытия позиции
if((SV>0)||(RealSL_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0)||(RealSL_Enabled&&&(Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&( (OrderMagicNumber()==Magic)||Magic==0))
{if(CB==1){OrderClose(OrderTicket(),OrderLots(),Bi d,Slip,Aqua);temp = Bid;return(0);}}
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&& ((OrderMagicNumber()==Magic)||Magic==0)){
if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Gold);temp = Bid;return(0);}}}double SLI=0,TPI=0;int TK=0;
*/
добавьте /* только в начале экспертных условий для закрытия позиции
и */ в конце
msn aboukalil ( at) hotmail.fr
Спасибо aboukalil за быстрый ответ, но я не совсем понимаю, если я отредактирую это, не будет ли у меня команды закрытия, она оставит мои существующие сделки, но мой советник никогда не закроет свою собственную сделку, чтобы открыть ее в противоположном направлении?
Не могли бы вы немного помочь в этом вопросе
Привет всем.....
Любопытно, знает ли кто-нибудь или владеет универсальным индикатором, который позволяет вызывать любой линейный однобуферный индикатор в iCustoms универсального индикатора так, что когда универсальный индикатор прикреплен к графику, он будет отображаться как двухцветный гистограммный индикатор, изменение цвета которого основано на наклоне iCustomed indy?
Любая помощь будет принята с благодарностью.
Дамы и господа,
Как я могу превратить индикатор в csv файл? Спасибо.
Дамы и господа, Как я могу превратить индикатор в файл csv? Спасибо.
Вы имеете в виду, как сохранить в файл CSV?
Проверьте это:
Инструменты - .csv reader
помогите пожалуйста модифицировать этот небольшой скрипт
Здравствуйте,
Не мог бы кто-нибудь помочь модифицировать этот небольшой скрипт ввода ордеров
чтобы размер лота зависел от % риска от размера счета.
Я знаю, что эта строка кода должна быть вставлена где-то, но я понятия не имею, как ее запрограммировать
double Risk = RiskPercent / 100;
if (UseMoneyMgmt)
Lots=NormalizeDouble(AccountBalance()*Risk/stoploss/(MarketInfo(Symbol(),MODE_TICKVALUE)),2);
большое спасибо заранее
отложенный ордер
привет!
как управлять отложенными ордерами? (с помощью mt4 api)
когда моя программа получила TT_ORDER_PENDING_OPEN (тип сделки)
и было получено PUMP_UPDATE_ACTIVATION в уведомлении о прокачке.