Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 509

 

Leute, nennt mir einen Roboter, der Martin benutzt.

Ich eröffne zum Beispiel einen Auftrag und der Roboter arbeitet weiter...

 
Zolotai:

Leute, nennt mir einen Roboter, der Martin benutzt.

Ich eröffne zum Beispiel einen Auftrag und der Roboter arbeitet weiter...

Code Basis
 

Hallo. Ich versuche herauszufinden, wie die Ereignisse funktionieren. Ich habe das Ereignis des Löschens eines Objekts aus dem Diagramm(CHARTEVENT_OBJECT_DELETE) NICHT bearbeitet. Entfernt sowohl mit der Maus als auch über die Objektliste. Bauen Sie 600.

Bitte sagen Sie mir, was los ist?

Ich verwende den Code aus der Hilfe

#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);
}
}


 

Liebe Forumsmitglieder, helfen Sie mir zu verstehen, i ist die aktuelle Kerze, warum i-2 nicht eine Linie zeichnen will, der Tester bleibt beim Laufen stehen.

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

Liebe Forumsmitglieder, helfen Sie mir zu verstehen, i ist die aktuelle Kerze, warum i-2 nicht eine Linie zeichnen will, der Tester bleibt beim Laufen stehen.


Wenn Sie versuchen, eine Linie zu ziehen, die 2 Kerzen vor dem i liegt, müssen Sie 2 addieren, nicht subtrahieren, denn die Kerzennummerierung geht von rechts nach links, 0 - aktueller Balken.
Wenn Sie versuchen, Linien auf einen Balken zu zeichnen, der noch nicht existiert (-2), kann der Array-Index nicht negativ sein. Berechnen Sie dazu die Zeit des gewünschten Taktes, z. B. Time[0]+2*(Time[0]-Time[1])
 
isn-88:

Wenn Sie versuchen, eine Linie zu ziehen, die 2 Kerzen vor der i-ten Kerze liegt, müssen Sie 2 addieren, nicht subtrahieren, denn die Kerzennummerierung geht von rechts nach links, 0 - aktueller Balken.
Wenn Sie versuchen, Linien auf einen Balken zu zeichnen, der noch nicht existiert (-2), kann der Array-Index nicht negativ sein. Dazu müssen Sie die Zeit des gewünschten Balkens berechnen, z. B. Time[0]+2*(Time[0]-Time[1])

Vielen Dank, die Linie hätte auf einem Balken gezogen werden müssen , den es nicht gibt (-2)
 
Alexandr24:

Vielen Dank, die Linie hätte auf einem Balken gezogen werden müssen , den es nicht gibt (-2)

Warum sonst sollte es einen Preis geben. Schließlich handelt es sich um ein zeitbasiertes Objekt.
 
Alexandr24:

Vielen Dank, die Linie sollte auf einem Balken (-2), die nicht existiert gebaut worden sein

Bitte
Hier ist eine weitere "schöne" Lösung

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

 

Leute, helft mir auf die Sprünge. Sie müssen eine Bestellung eröffnen.

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

);

}

}

Es funktioniert nicht, was ist los?

Schreiben Sie einen Code, der einfach eine Position eröffnet. Das ist alles, was Sie brauchen...

 
Zolotai:

Leute, helft mir auf die Sprünge. Sie müssen eine Bestellung eröffnen.

Es funktioniert nicht, was ist los?

Schreiben Sie einen Code, der einfach eine Position eröffnet. Das ist alles, was Sie brauchen...


TakeProfit ist bei der Auftragsübermittlung nicht korrekt angegeben. Sie sollten den Preis angeben, nicht die Anzahl der Nano-Pips des Gewinns. Korrigieren auf Ask+TakeProfit*Point()
Ask, Bid muss nicht normalisiert werden....

OrderSend(

Symbol(),

OP_BUY,

StartLot,

Ask,

Slippage,

0,

Ask+TakeProfit*Point(),

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

0,

0,

clrBlue

);