Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Berechneten Wert nutzen (http://www.expert-advisor.com/forum/showthread.php?t=7203)

Graf-Rotz 21.06.22 15:49

Berechneten Wert nutzen
 
Hallo Zusammen,

ich bin sehr neu und habe daher auch viele Fragen.

Ich habe mir jetzt mittels nachfolgender Formel ein paar Zahlen aus der Vergangenheit gezogen. Diese stimmen auch, da ich sie mir als Comment anzeigen lasse.

PHP-Code:

for(int i OrdersTotal() - 1>= 0i--)
    {
     if(
OrderSelect(iSELECT_BY_POSMODE_TRADES))
      {
         if (
OrderType() == OP_BUY && OrderSymbol() == Symbol())
           {
            if (
OrderMagicNumber() == Magic_Sell)
              {        
               
TicketSell OrderTicket();
               
Magic_Sell_TP OrderTakeProfit();
               
Magic_Sell_SL OrderStopLoss();
               
Magic_Sell_Price OrderOpenPrice();
              } 
                     
          }
       }
   } 

Jetzt will ich diese Werte, zum Beispiel "Magic_Sell_TP", so speichern, das ich sie bei einer neuen Order nutzen kann...

PHP-Code:

OrderSend(Symbol(),OP_BUY,1,Ask,1000,1,Magic_Sell_TP,NULL,... 

Aber leider gibt er mir immer Fehler aus, wie "undeclared identifier" oder "function not defined".

Was mache ich falsch? Ich bin verwirrt... vielen Dank schon mal

Indikator-Trading 21.06.22 17:44

dann hast du die Variable innerhalb eine Funktion definiert. Schiebe sie in den globalen Bereich, dann können auch unterschiedliche Funktionen darauf zugreifen. Alternativ kannst du die Variablen auch Lokal in den Funktionen nutzen, wenn du die Werte dann zu den anderen Funktionen als Parameter weitergibst.

Graf-Rotz 22.06.22 06:50

Vielen lieben Dank für deine schnelle Hilfe.

TraderMike 22.06.22 07:26

Der Einsatz von Globalen Variablen wäre auch eine Möglichkeit die Werte immer verfügbar zu halten, 2 Beispiele:

Code:

if(AccountProfit() < 0) {
    if(AccountProfit() < GlobalVariableGet("_AccountDrawDown_") ) {GlobalVariableSet("_AccountDrawDown_", AccountProfit() ); } }

(es wird der immer höchste Minus Wert in die GV geschrieben-der reale echte DD (Geld) steht somit zur Verfügung)


 if (OrderMagicNumber() == Magic_Sell)
              {       
              TicketSell = OrderTicket(); -> GlobalVariableSet("_TicketSell_", OrderTicket() );
              Magic_Sell_TP = OrderTakeProfit(); -> GlobalVariableSet("_Magic_Sell_TPl_",OrderTakeProfit() );

Mit GlobalVariableGet("GV Name") kann man die Werte auslesen.
Globale Variablen sind 30 Tage verfügbar, werden Sie nicht mehr genutzt, automatisch gelöscht.
Diese werden in die Datei gvariables.dat im Ordner profiles bei Änderung geschrieben, werden bei Neustart/Init nimmer neu eingelesen. Kein Datenverlust!
Eine Globale Variable braucht zwischen 4 bis 8 Byte im Arbeitsspeicher und ist in der Ausführung extrem schnell, im Gegensatz zum Einlesen einer Datei (FileOpen/Write/Close)
Eine Garbage Collection ist nicht notwendig, was ein großer Vorteil ist, neben der ständigen Verfügbarkeit.

Mike


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:33 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum