Да, я торгую в Альпари.
Действительно, с нулевыми стопами всё работает. Как-то глупо, но спасибо за решение.
А что значит "открываются по рынку"?
Да, я торгую в Альпари.
А что значит "открываются по рынку"?
Это и значит, позиция открывается не по заявленной трейдером цене, а по ближайшей рыночной. Стопы в таком случае запрещены, их можно выставить позже.
Да, я торгую в Альпари.
А что значит "открываются по рынку"?
СЛ и ТП нельзя выставить при открытии рыночного ордера, это можно сделать потом, модифицировав уже открытый ордер
Функции для такого исполнения приказа есть напр. в примере: https://www.mql5.com/ru/articles/1385
//+-------------------------------------------------------------------+ //| Открывает позиции в условиях рыночного исполнения торговых заявок | //+-------------------------------------------------------------------+ int WHCOrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration, color arrow_color) { int ticket=OrderSend(symbol,cmd,volume,price,slippage,0,0,comment,magic,expiration,arrow_color); int check=-1; if(ticket>0 && (stoploss!=0 || takeprofit!=0)) { if(!OrderModify(ticket,price,stoploss,takeprofit,expiration,arrow_color)) { check=GetLastError(); if(check!=ERR_NO_MQLERROR) Print("OrderModify error: ",ErrorDescription(check)); } } else { check=GetLastError(); if(check!=ERR_NO_ERROR) Print("OrderSend error: ",ErrorDescription(check)); } return(ticket); } //+------------------------------------------------------------------+
Вставляете (копируете) эту функцию в самый конец вашего кода.
задаете в парметрах
#define MAGICMA 20050610
extern int StopLoss = 500;
extern int TakeProfit = 500;
extern color BuyColor = Blue;
extern color SellColor = Salmon;
double SL=0,TP=0;
А вместо вашего i=OrderSend(Symbol(),OP_BUY,loot,Ask,slip,Bid-0.5,Bid+0.5);
- задаете
i= WHCOrderSend(Symbol(),OP_SELL,Loot,Bid, slip, SL,TP,"хи-хи", MAGICMA, 0,SellColor);
см. код по ссылке в примере
На скорую руку вставил вам в код, работу не проверял (работает в селл)
#define MAGICMA 20050610 extern int StopLoss = 500; extern int TakeProfit = 500; extern color BuyColor = Blue; extern color SellColor = Salmon; double loot; double SL=0,TP=0; //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> int start() { int i,slip=3*MathPow(10,Digits)/10000; loot=0.1; i= WHCOrderSend(Symbol(),OP_SELL,loot,Bid, slip, SL,TP,"хи-хи", MAGICMA, 0,SellColor); return(0); } //+-------------------------------------------------------------------+ //| Открывает позиции в условиях рыночного исполнения торговых заявок | //+-------------------------------------------------------------------+ int WHCOrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment, int magic, datetime expiration, color arrow_color) { int ticket=OrderSend(symbol,cmd,volume,price,slippage,0,0,comment,magic,expiration,arrow_color); int check=-1; if(ticket>0 && (stoploss!=0 || takeprofit!=0)) { if(!OrderModify(ticket,price,stoploss,takeprofit,expiration,arrow_color)) { check=GetLastError(); if(check!=ERR_NO_MQLERROR) Print("OrderModify error: ",ErrorDescription(check)); } } else { check=GetLastError(); if(check!=ERR_NO_ERROR) Print("OrderSend error: ",ErrorDescription(check)); } return(ticket); } //+------------------------------------------------------------------+

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Полазил по форуму - похожие проблемы были, но конкретно моей проблемы не нашёл:
На демо-счёте не открыватся ордера. Только руками, а если советник пытается, то в журнале идёт сообщение:
2014.02.03 10:56:49 '9471448': order buy 0.10 EURUSD opening at 0.00000 sl: 0.84942 tp: 1.84942 failed [Invalid S/L or T/P].
Почему цена открытия равна нулю и в чём тут инвалидность стопов?
Текст советника простейший:
double loot;
int start()
{
int i,slip=3*MathPow(10,Digits)/10000;
loot=0.1;
i=OrderSend(Symbol(),OP_BUY,loot,Ask,slip,Bid-0.5,Bid+0.5);
return(0);
}