Nun, ich habe ein anderes Ziel als Geld zu sparen.
Ich habe EAs auf den Charts, und zusätzliche Kopien von Fenstern zu öffnen, um vom Panel aus zu handeln, ist nicht der richtige Weg. Deshalb habe ich das Handelspanel in Form eines Indikators geschrieben - man kann viele davon in einem Diagramm unterbringen.
Dies ist ein kleiner Auszug, der Code ist ein wenig abgeschnitten, aber die Logik ist klar:
Indikator
// Открыть позиции// Открыть позицию Buyif(sparam==prefix+"_openBuy") {
BroadcastEvent(gMagic,edLots,_symbol);
ObjectSetInteger(0,prefix+"_openBuy",OBJPROP_STATE,false);
ChartRedraw();
}
// Открыть позицию Sellif(sparam==prefix+"_openSell") {
BroadcastEvent(gMagic,edLots,_symbol);
ObjectSetInteger(0,prefix+"_openSell",OBJPROP_STATE,false);
ChartRedraw();
}
//===============================================================================================//------------------ Функция посылает сообщение всем открытым графикам -------------------------+//===============================================================================================void BroadcastEvent(long lparam,double dparam,string sparam) {
ushort eventID=9784-CHARTEVENT_CUSTOM;
long currChart=ChartFirst();
int i=0;
while(i<CHARTS_MAX) // у нас наверняка не больше CHARTS_MAX открытых графиков
{
EventChartCustom(currChart,eventID,lparam,dparam,sparam);
currChart=ChartNext(currChart); // на основании предыдущего получим новый график if(currChart==-1) break; // достигли конца списка графиков
i++; // не забудем увеличить счетчик
}
}
Ja, ich dachte auch daran, dass der EA die ChartID meines Charts in eine globale Variable des Terminals schreibt, dann wissen alle Indikatoren, wohin sie das Ereignis senden müssen. Spot ohne BroadcastEvent.
Aleksei Stepanenko: Ja, ich denke, die ChartID meines Charts in die globale Variable des Terminals zu schreiben, dann wissen alle Indikatoren, wohin das Ereignis zu senden ist. Spot ohne BroadcastEvent.
Glob.variable ist die gleiche Datei, das Terminal arbeitet hart mit ihr und tötet die Festplatte, und es ist nicht sinnvoll, sie auf statische Weise zu überprüfen, es ist der gleiche Zyklus, aber im Profil :)
Glob.variable ist die gleiche Datei, das Terminal arbeitet hart mit ihr und tötet die Festplatte, und es ist nicht sinnvoll, sie auf statische Weise zu überprüfen, es ist der gleiche Zyklus, aber im Profil :)
Nein, nein. Einmal beim Start des Expert Advisors schreibt er die Nummer seines Charts in die globale Variable. Dann liest der Indikator diese Variable einmal beim Start aus, und jedes Mal, wenn das Objekt erstellt wird, sendet er das Ereignis nur an den Chart mit dem EA.
Glob.variable ist die gleiche Datei, das Terminal arbeitet hart mit ihr und tötet die Festplatte, und es ist nicht sinnvoll, sie auf statische Weise zu überprüfen, es ist der gleiche Zyklus, aber im Profil :)
dieselbe Datei, wenn Sie sie zwangsweise leeren, ansonsten funktioniert der Speicher meistens
Im Allgemeinen würde ein normaler Sender zwischen EAs/Indikatoren funktionieren:
nicht normal, um jeweils 8 Bytes, werden Sie müde sein, etwas zu übertragen
obwohl es funktionieren wird -@fxsaber hat eine Bibloo gemacht, es scheint TypeToByte verwendet, um komplexere Strukturen auszutauschen
ZS: Kollisionen, wie geht man damit um? - Imho führen beim Datenaustausch alle Wege zur Datenbank, 90% der Arbeit wird Ihnen abgenommen, und das in sehr guter Qualität.
Nun, ich habe ein anderes Ziel als Geld zu sparen.
Ich habe EAs auf den Charts, und zusätzliche Kopien von Fenstern zu öffnen, um vom Panel aus zu handeln, ist nicht der richtige Weg. Deshalb habe ich das Handelspanel in Form eines Indikators geschrieben - man kann viele davon in einem Diagramm unterbringen.
Dies ist ein kleiner Auszug, der Code ist ein wenig abgeschnitten, aber die Logik ist klar:
Indikator
Expert Advisor
Wo ist der Indikator? Bitte fügen Sie es hier an, damit Sie nicht in den Forumsthemen herumwühlen müssen.
Ja, ich denke, die ChartID meines Charts in die globale Variable des Terminals zu schreiben, dann wissen alle Indikatoren, wohin das Ereignis zu senden ist. Spot ohne BroadcastEvent.
Glob.variable ist die gleiche Datei, das Terminal arbeitet hart mit ihr und tötet die Festplatte, und es ist nicht sinnvoll, sie auf statische Weise zu überprüfen, es ist der gleiche Zyklus, aber im Profil :)
Anzeige
Anzeige
Wenn überhaupt, dann von hier aus
Glob.variable ist die gleiche Datei, das Terminal arbeitet hart mit ihr und tötet die Festplatte, und es ist nicht sinnvoll, sie auf statische Weise zu überprüfen, es ist der gleiche Zyklus, aber im Profil :)
Glob.variable ist die gleiche Datei, das Terminal arbeitet hart mit ihr und tötet die Festplatte, und es ist nicht sinnvoll, sie auf statische Weise zu überprüfen, es ist der gleiche Zyklus, aber im Profil :)
dieselbe Datei, wenn Sie sie zwangsweise leeren, ansonsten funktioniert der Speicher meistens
Im Allgemeinen stellt sich ein normaler Sender zwischen EAs/Indikatoren wie folgt dar
Empfänger:
Sender:
Keine Belastung des Prozessors.
Im Allgemeinen würde ein normaler Sender zwischen EAs/Indikatoren funktionieren:
nicht normal, um jeweils 8 Bytes, werden Sie müde sein, etwas zu übertragen
obwohl es funktionieren wird -@fxsaber hat eine Bibloo gemacht, es scheint TypeToByte verwendet, um komplexere Strukturen auszutauschen
ZS: Kollisionen, wie geht man damit um? - Imho führen beim Datenaustausch alle Wege zur Datenbank, 90% der Arbeit wird Ihnen abgenommen, und das in sehr guter Qualität.