任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 509

 

伙计们,建议一个机器人。 一个使用马丁的机器人。

例如,我打开一个订单,机器人一直在工作...

 
Zolotai:

伙计们,告诉我一个机器人。 一个使用马丁的机器人。

例如,我打开一个订单,机器人一直在工作...

代码基础
 

你好。我正试图弄清楚这些事件是如何运作的。我没有从图表中删除一个对象的事件(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);
}
}


 

亲爱的论坛成员,请帮助我理解,i是当前的蜡烛,为什么i-2不想画线,测试器运行时停止。

ObjectCreate("line",OBJ_VLINE,0,Time[i-2],Open[1]);
 
Alexandr24:

亲爱的论坛成员,请帮助我理解,i是当前的蜡烛,为什么i-2不想画线,测试器运行时停止。


如果你想画一条比i早2个蜡烛的线,那么你需要加2,而不是减,因为蜡烛的编号是从右到左,0-当前栏。
如果你试图在一个还不存在的柱子上画线(-2),数组索引 不能是负数。要做到这一点,要计算出所需的条形图的时间,例如:Time[0]+2*(Time[0]-Time[1])
 
isn-88:

如果你想在第i根蜡烛的前面画一条线,那么你需要加2,而不是减,因为蜡烛的编号是从右到左的,0-当前栏。
如果你试图在一个还不存在的柱子上画线(-2),数组索引不能是负数。要做到这一点,你需要计算你想要的酒吧的时间,例如:Time[0]+2*(Time[0]-Time[1])

非常感谢,线应该画在一个不存在的柱子(-2)
 
Alexandr24:

非常感谢,线应该画在一个不存在的柱子(-2)

否则为什么会有一个价格。毕竟,该对象是基于时间的。
 
Alexandr24:

非常感谢,这条线路应该建立在一个不存在的酒吧(-2) 上。


这里是另一个 "美丽 "的解决方案

Time[0]+Period()*60*2 //60 переводим в секунды, 2 кол-во баров

 

伙计们,帮我开始吧。需要开一个订单。

input int TakeProfit = 30;

input double StartLot = 0.01;

input double summ=false; //true, открываем позиции в обе стороны

input int Slippage = 30; // установим значение проскальзывания



void OnTick()

{

if(summ) { // открываем однупозицию, покупка.

OrderSend(

Symbol(),

OP_BUY,

StartLot,

NormalizeDouble(NormalizeDouble(Ask,_Digits),_Digits),

Slippage,

0,

TakeProfit,

WindowExpertName()+" "+(string)0,

0,

0,

clrBlue

);

}else{

OrderSend(

Symbol(),

OP_BUY,

StartLot,

NormalizeDouble(NormalizeDouble(Ask,_Digits),_Digits),

Slippage,

0,

TakeProfit,

WindowExpertName()+" "+(string)0,

0,

0,

clrBlue

);

OrderSend(

Symbol(),

OP_SELL,

StartLot,

NormalizeDouble(NormalizeDouble(Bid,_Digits),_Digits),

Slippage,

0,

TakeProfit,

WindowExpertName()+" "+(string)0,

0,

0,

clrBlue

);

}

}

它不工作,怎么了?

编写代码,只需打开一个位置。这就是你需要的一切...

 
Zolotai:

伙计们,帮我开始吧。需要开一个订单。

它不工作,怎么了?

编写代码,只需打开一个位置。这就是你需要的一切...


提交订单 时没有正确指定TakeProfit。你应该指定价格,而不是利润的纳米点数量。纠正为Ask+TakeProfit*Point() Ask, Bid不需要归一化....

OrderSend(

Symbol(),

OP_BUY,

StartLot,

Ask,

Slippage,

0,

Ask+TakeProfit*Point(),

WindowExpertName()+" "+(string)0,

0,

0,

clrBlue

);