关闭市场订单,进行销售。 OrderDelete(sell);//关闭卖出限制。 } 如果(OrderSelect(buy,SELECT_BY_TICKET)==true) { OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket, lot, close price, slippage in points, color of close箭头在图表上)
if ((hi-low)<=max_koridor_v_punktah)
{
buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//открытие ордера на покупку.if (buy>0)
{
Alert ("Установлен ордер BuyStop ",buy);
}
sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//открытие ордера на продажу.if (sell>0)
{
Alert ("Установлен ордер SellStop ",sell);
}
if (DayOfWeek()==5 && Hour()==22) //удаляем отложенные и открытые ордера в пятницу, в 23:00 по серверному времени
{
if (OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(тикет,лот,цена закрытия,проскальзывание в пунктах,цвет
стрелки закрытия на графике)зыкрытие рыночного ордера на продажу.OrderDelete(sell);//закрытие лимиток на продажу.
}
if (OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(тикет,лот,цена закрытия,проскальзывание в пунктах,цвет стрелки
закрытия на графике)зыкрытие рыночного ордера на покупку.OrderDelete(buy);//закрытие лимиток на покупку.return(0);
}
}
}
далее int buy,sell; должно быть за пределами старта
Да и лимиток тут нет, поэтому закрыть он их и не должен.
#define KEY_NUMPAD_5 12 #define KEY_LEFT 37 #define KEY_UP 38 #define KEY_RIGHT 39 #define KEY_DOWN 40 #define KEY_NUMLOCK_DOWN 98 #define KEY_NUMLOCK_LEFT 100 #define KEY_NUMLOCK_5 101 #define KEY_NUMLOCK_RIGHT 102 #define KEY_NUMLOCK_UP 104 //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- Print("Запущен эксперт с именем ",MQLInfoString(MQL_PROGRAM_NAME)); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ voidOnChartEvent(constint id, // идентификатор события constlong& lparam, // параметр события типа long constdouble& dparam, // параметр события типа double conststring& sparam) // параметр события типа string { //--- нажатие левой кнопкой мышки на графике if(id==CHARTEVENT_CLICK) { Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam); } //--- нажатие мышкой на графическом объекте if(id==CHARTEVENT_OBJECT_CLICK) { Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'"); } //--- нажатие кнопки на клавиатуре if(id==CHARTEVENT_KEYDOWN) { switch(int(lparam)) { case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break; case KEY_LEFT: Print("Нажата KEY_LEFT"); break; case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break; case KEY_UP: Print("Нажата KEY_UP"); break; case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break; case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break; case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break; case KEY_DOWN: Print("Нажата KEY_DOWN"); break; case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break; case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break; default: Print("Нажата какая-то неперечисленная клавиша"); } ChartRedraw(); } //--- удален объект if(id==CHARTEVENT_OBJECT_DELETE) { Print("Удален объект с именем ",sparam); } //--- создан объект if(id==CHARTEVENT_OBJECT_CREATE) { Print("Создан объект с именем ",sparam); } //--- перемещен объект или изменены координаты точек привязки if(id==CHARTEVENT_OBJECT_DRAG) { Print("Изменение точек привязки объекта с именем ",sparam); } //--- изменен текст в поле ввода графического объекта Edit if(id==CHARTEVENT_OBJECT_ENDEDIT) { Print("Изменен текст в объекте Edit ",sparam); } }
日安,亲爱的先生们!
我需要调用变量:当天的最高价,当天的最低价,当天的收盘价和开盘价,以及第二天的开盘价!
问候,AlexMikash
https://docs.mql4.com/ru/series
如果(DayOfWeek()==1,2.....)&& Hour()==1,2....)
{
double hi=iHigh(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define high
double low=iLow(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//define low。
/////////////////////////////////////////////////////////////////////////////////////////////////
double op=iOpen(NULL,0,iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));//定义打开。
如果((hi-low)<=max_koridor_v_punktah)
{
int buy = OrderSend(Symbol(), OP_BUYSTOP, LotBuy, OpenBuy, 0, StopLossBuy, 0);//打开购买订单。
如果(buy>0)
{
警报("BuyStop订单已被设置",buy)。
}
int sell= OrderSend(Symbol(), OP_SELLSTOP, LotSell, OpenSell, 0, StopLossSell, 0);//打开卖单。
如果(卖出>0)
{
警报("SellStop order set",sell)。
}
如果(DayOfWeek()==5 && Hour()==22) //在服务器时间周五23:00删除挂单和开单
{
如果(OrderSelect(sell,SELECT_BY_TICKET)==true)
{
OrderClose(sell,OrderLots(),Bid,3,Green);//(Ticket,lot,收盘价,滑点,图表上收盘箭头的颜色)
关闭市场订单,进行销售。
OrderDelete(sell);//关闭卖出限制。
}
如果(OrderSelect(buy,SELECT_BY_TICKET)==true)
{
OrderClose(buy,OrderLots(),Ask,3,Red);//(Ticket, lot, close price, slippage in points, color of close箭头在图表上)
平仓买入的市场订单。
OrderDelete(buy);//关闭买入限制。
return(0);
}
}
}
谁能告诉我为什么它不关闭订单,不删除限制?
至少要有
像这样。
далее int buy,sell; должно быть за пределами старта
至少要有
像这样。
当从图表中移出和终端关闭时,机器人将从内存中卸载。至少要翻阅一下手册,它非常有用,可以解决很多问题。
他们不会阅读。他们甚至不会看视频。你必须以某种方式催眠他们,.....。
是否有一种资源/平台可以对EA进行多币种测试?
是的。
MT5
是的。
MT5
用MLQ4写的EA能不能用?
你好。我正试图弄清楚这些事件是如何运作的。我没有从图表中删除一个对象的事件(CHARTEVENT_OBJECT_DELETE)。用鼠标和通过对象列表都可以删除。建立600个。
请告诉我什么是错的?
我使用帮助中的代码
#define KEY_NUMPAD_5 12
#define KEY_LEFT 37
#define KEY_UP 38
#define KEY_RIGHT 39
#define KEY_DOWN 40
#define KEY_NUMLOCK_DOWN 98
#define KEY_NUMLOCK_LEFT 100
#define KEY_NUMLOCK_5 101
#define KEY_NUMLOCK_RIGHT 102
#define KEY_NUMLOCK_UP 104
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Print("Запущен эксперт с именем ",MQLInfoString(MQL_PROGRAM_NAME));
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id, // идентификатор события
const long& lparam, // параметр события типа long
const double& dparam, // параметр события типа double
const string& sparam) // параметр события типа string
{
//--- нажатие левой кнопкой мышки на графике
if(id==CHARTEVENT_CLICK)
{
Print("Координаты щелчка мышки на графике: x = ",lparam," y = ",dparam);
}
//--- нажатие мышкой на графическом объекте
if(id==CHARTEVENT_OBJECT_CLICK)
{
Print("Нажатие кнопки мышки на объекте с именем '"+sparam+"'");
}
//--- нажатие кнопки на клавиатуре
if(id==CHARTEVENT_KEYDOWN)
{
switch(int(lparam))
{
case KEY_NUMLOCK_LEFT: Print("Нажата KEY_NUMLOCK_LEFT"); break;
case KEY_LEFT: Print("Нажата KEY_LEFT"); break;
case KEY_NUMLOCK_UP: Print("Нажата KEY_NUMLOCK_UP"); break;
case KEY_UP: Print("Нажата KEY_UP"); break;
case KEY_NUMLOCK_RIGHT: Print("Нажата KEY_NUMLOCK_RIGHT"); break;
case KEY_RIGHT: Print("Нажата KEY_RIGHT"); break;
case KEY_NUMLOCK_DOWN: Print("Нажата KEY_NUMLOCK_DOWN"); break;
case KEY_DOWN: Print("Нажата KEY_DOWN"); break;
case KEY_NUMPAD_5: Print("Нажата KEY_NUMPAD_5"); break;
case KEY_NUMLOCK_5: Print("Нажата KEY_NUMLOCK_5"); break;
default: Print("Нажата какая-то неперечисленная клавиша");
}
ChartRedraw();
}
//--- удален объект
if(id==CHARTEVENT_OBJECT_DELETE)
{
Print("Удален объект с именем ",sparam);
}
//--- создан объект
if(id==CHARTEVENT_OBJECT_CREATE)
{
Print("Создан объект с именем ",sparam);
}
//--- перемещен объект или изменены координаты точек привязки
if(id==CHARTEVENT_OBJECT_DRAG)
{
Print("Изменение точек привязки объекта с именем ",sparam);
}
//--- изменен текст в поле ввода графического объекта Edit
if(id==CHARTEVENT_OBJECT_ENDEDIT)
{
Print("Изменен текст в объекте Edit ",sparam);
}
}
用MLQ4编写的EA能不能用?
如果你把代码翻译成mt5,那么是的。
没有其他补救措施。
谢谢你。你需要void init和deinit做什么?我理解deinit,它只执行代码。当机器人开始时,对吗?和 init ?
你怎么能使用一个代码。也就是说,你不必担心这五位数的问题。我怎么知道我目前的五位数是多少?
金属、股票和原材料不计入。