[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 378

 
Dimka-novitsek:
Ich wollte die Daten im Visualisierungstest während der Prüfung anzeigen. Ich beginne einen Test mit einem Expert Advisor. Ich ziehe einen anderen EA auf dasselbe Diagramm, da er gerade getestet wird. Ich sehe keinen Kommentar! Der Expert Advisor lächelt...


So wird es nicht funktionieren. Ein EA, der auf ein visuelles Testdiagramm gezogen wird, zeigt entweder gar nichts an oder er zeigt, was im Konto ist, nicht im Tester (ich weiß es nicht genau, mir fehlte irgendwie die Kreativität, so etwas zu erstellen:)

 

Ich sehe keinen Kommentar in der Tabelle.

int start()
  { Comment("OrdersProfit  ",OrderProfit(),"AccountBalance  ",AccountBalance(),"Equity  ",AccountEquity());
//----
  double Itogo_Profit=Orderasthitaem();
  if (Itogo_Profit>ProfitSeriyniy){Pozuminusudalaem();}
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Integer:

Vadim, haben Sie versucht, es anzuwenden? Es wird nichts synchronisiert. Ich habe kürzlich damit gespielt. Sie müssen die Warteschlange selbst erstellen. Leider wird dadurch der Code nur um drei Zeilen gekürzt. Oder vielleicht verstehe ich es nicht.
Habe ich nicht ausprobiert. Ich werde es jetzt versuchen. Ich mache jetzt alles in DLL. Dort ist es einfacher.
 
Danke, Integer!!!
 

Verstehe. VVel in init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//----
return(0);
}

Im Tester ist nichts zu finden. Na ja...

 

Dimka-novitsek:


Verstehe. VVel in init()
{
//----
Comment("OrdersProfit ",OrderProfit(), "AccountBalance ",AccountBalance(), "Equity ",AccountEquity());
//----
return(0);
}

Im Tester ist nichts zu finden. Na ja...


Vielleicht hat der Expert Advisor, in den er eingefügt wurde, die Funktion der Kommentarausgabe? Prüfen Sie, wie oft die Funktion Comment() in diesem EA aufgerufen wird.

Um OrderProfit() auszugeben, sollte die Order zuerst ausgewählt werden.

Außerdem... was bringt es, es in der Init zu tun? Dies sollte in start() geschehen.

 
Integer:


Vielleicht hat der EA, in den dies eingefügt wird, auch eine Funktion zur Ausgabe von Kommentaren? Prüfen Sie, wie oft die Funktion Comment() in dem EA aufgerufen wird.

Um OrderProfit() auszugeben, muss der Auftrag zuerst ausgewählt werden.

Außerdem... was bringt es, es in der Init zu tun? Dies sollte in start() geschehen.



Inite wollte ich sehen, ob mein Zeug etwas schreibt, aber es gibt keine Zecken. Deshalb habe ich diese Zeile in der Init-Datei dupliziert. Und ich habe es mit OrderProfit() vermasselt!

Hier haben wir ein ganzes Rätsel. Ist das zu fassen!!! Es wird erwartet, dass 4063 ein ganzzahliger Parameter ist.

hier -

OrderClose(  Orderasthitaem[i,0,1], Orderasthitaem[i,0,2], Bid, 5, 0) ; Error=GetLastError(); 

Array vom Typ Dublette. Ticket ist genau eine ganze Zahl und Ticket, aber es stellt sich heraus, dass es ein Double ist. Wie erhält man mit der Funktion Dublette eine ganze Zahl?

Entschuldigen Sie, ich verstehe überhaupt nicht.

 
Integer:

Vadim, haben Sie versucht, es anzuwenden? Es findet keine Synchronisation statt. Ich habe kürzlich damit gespielt. Sie müssen die Warteschlange selbst organisieren. Leider können Sie damit den Code nur um drei Zeilen kürzen. Oder vielleicht verstehe ich es nicht.

Die Warteschlange ist wie in jeder anderen Sprache organisiert. Allein durch die Organisation der Ein- und Ausgänge des zu schützenden Blocks.

Dies ist ein Skript:

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
Das Ausschneiden, wie auch das Ersetzen durch andere Funktionen, wird nicht funktionieren. Dafür ist der atomare Zugang gedacht. Nur eine Funktion kann dies in MQL4 tun.
Ganzzahlig:
D.h. nur mit dieser Funktion kann sichergestellt werden, dass immer nur ein EA arbeitet, aber die Warteschlange nicht aufgebaut wird, ein EA kann untätig bleiben, und ein anderer kann zweimal aufgerufen werden.

Es scheint gut zu funktionieren. Es wurden 6 Skripte mit Pausen von 3000, 2000, 1000, 500, 300, 200 geladen. Hier ist ein Teil des Protokolls:

19:58:36 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Start
19:58:37 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Ende
19:58:37 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:39 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Ende
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:39 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Ende
19:58:39 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Ende
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:43 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Ende
19:58:43 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:45 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Ende
19:58:45 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Ende
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Ende
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:46 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Ende
19:58:46 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:47 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Ende
19:58:47 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Start
19:58:48 Check_GlobalVariableSetOnCondition() GBPJPY,M1: GBPJPY Ende
19:58:48 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:50 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Ende
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:50 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Ende
19:58:50 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Ende
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Start
19:58:54 Check_GlobalVariableSetOnCondition() NZDUSD,M1: NZDUSD Ende
19:58:54 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Start
19:58:56 Check_GlobalVariableSetOnCondition() EURUSD,M1: EURUSD Ende
19:58:56 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:58:57 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Ende
19:58:57 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() AUDUSD,M1: AUDUSD Ende
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Start
19:59:00 Check_GlobalVariableSetOnCondition() GBPUSD,M1: GBPUSD Ende
19:59:00 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Start
19:59:01 Check_GlobalVariableSetOnCondition() USDCAD,M1: USDCAD Ende

 
Es funktioniert in dem Sinne, dass eine Funktion zu einem bestimmten Zeitpunkt ausgeführt wird, aber die Reihenfolge wird nicht eingehalten.
 
Dimka-novitsek:


...Wie erhält man eine ganzzahlige Zahl aus einer Dublettenfunktion?

int Int(double v){

return(v);

}