mql4 code Stringfind

Einloggen oder registrieren, um einen Kommentar zu schreiben
Mohamed Ben Haddou
363
Mohamed Ben Haddou  

Hallo zusammen,


Ich habe einen EA-Code mit drei "Blöcken" für die Bestellung "Kaufen". Nur der Text ändert sich ("jetzt kaufen", "buynow", "buy.now"). Ich möchte den EA-Code reduzieren, nur einen von drei Blöcken machen. Kann ich die Blöcke in einen Block setzen?


 //-- buy now

                     k = StringFind(text,  " buy now  " );
                     if (k > 0)
                     {
                        Done = false;
                           
                        Trade_Type[NumOfTrades] = OP_BUY;
                        pos = k + StringLen(" buy now  ");
                        pos2 = StringFind(text, " ", pos);
                        len = pos2-pos;
                        Trade_Price[NumOfTrades] = (double) StringSubstr(text, pos, len);
                        NumOfTrades++;
                        
                        StringReplace(text, " buy now " , "");
                     }
                     
                     k = StringFind(text,  "buynow  ");
                     if (k > 0)
                     {
                        Done = false;
                           
                        Trade_Type[NumOfTrades] = OP_BUY;
                        pos = k + StringLen( "buynow " );
                        pos2 = StringFind(text, " ", pos);
                        len = pos2-pos;
                        Trade_Price[NumOfTrades] = (double) StringSubstr(text, pos, len);
                        NumOfTrades++;
                        
                        StringReplace(text, " buynow " , "");
                     }
                     
                     k = StringFind(text, " buy.now  ");
                     if (k > 0)
                     {
                        Done = false;
                           
                        Trade_Type[NumOfTrades] = OP_BUY;
                        pos = k + StringLen(" buy.now  ");
                        pos2 = StringFind(text, " ", pos);
                        len = pos2-pos;
                        Trade_Price[NumOfTrades] = (double) StringSubstr(text, pos, len);
                        NumOfTrades++;
                        
                        StringReplace(text, " buy.now " , "");
                     }
Otto Pauser
1420
Otto Pauser  
Mohamed Ben Haddou:

Hallo zusammen,

Ich habe einen EA-Code mit drei "Blöcken" für die Bestellung "Kaufen". Nur der Text ändert sich ("jetzt kaufen", "buynow", "buy.now"). Ich möchte den EA-Code reduzieren, nur einen von drei Blöcken machen. Kann ich die Blöcke in einen Block setzen?

Ich denke du gehst das ganze komplett falsch an. Wenn du den EA-Code hast dann ändere doch dort was.

Hast du den Code von einem YT-Kanal? Ich vermute.

Mach doch venünftige Signale und keine Strings. Das ist so ziemlich das langsamste was es gibt in der Computerei.

enum ENUM_SIGNAL
{
   SIGNAL_SELL  = -1,   // SELL
   SIGNAL_NONE  =  0,   // NONE
   SIGNAL_BUY   =  1,   // BUY
};

Diese Art von Signal kannst du auch summieren und auswerten zu einem Gesamtsignal und/oder in einer schnellen switch-VVerzweigung verwenden.

Mohamed Ben Haddou
363
Mohamed Ben Haddou  
Otto Pauser:

Ich denke du gehst das ganze komplett falsch an. Wenn du den EA-Code hast dann ändere doch dort was.

Hast du den Code von einem YT-Kanal? Ich vermute.

Mach doch venünftige Signale und keine Strings. Das ist so ziemlich das langsamste was es gibt in der Computerei.

Diese Art von Signal kannst du auch summieren und auswerten zu einem Gesamtsignal und/oder in einer schnellen switch-VVerzweigung verwenden.

Hi Otto,

ja ich habe den EA-Code, aber nicht von einem YouTube-Kanal. Der EA soll eine website (von meinem Broker) nach einem Text-muster scannen, wo Trade-Signale in einem Blog veröffentlicht werden.

mal steht da "EURUSD buynow".... mal "EURUSD buy now"...."EURUSD buy.now".. 

Otto Pauser
1420
Otto Pauser  
Mohamed Ben Haddou:

Hi Otto,

ja ich habe den EA-Code, aber nicht von einem YouTube-Kanal. Der EA soll eine website (von meinem Broker) nach einem Text-muster scannen, wo Trade-Signale in einem Blog veröffentlicht werden.

mal steht da "EURUSD buynow".... mal "EURUSD buy now"...."EURUSD buy.now".. 

such doch nur nach "buy" oder verknüpfe die abfrage mit || (oder)

StringFind(text, " buy now  ") || StringFind(text, " buy.now  ")
Mohamed Ben Haddou
363
Mohamed Ben Haddou  
Otto Pauser:

such doch nur nach "buy" oder verknüpfe die abfrage mit || (oder)

Mit der (oder) verknüpfung ||  lässt sich der code leider nicht verkürzen.

Nur nach buy suchen geht leider nicht, weil buy limit und buy stop auch da sind.

Otto Pauser
1420
Otto Pauser  
Mohamed Ben Haddou:

Mit der (oder) verknüpfung ||  lässt sich der code leider nicht verkürzen.

Doch geht schon, mein Code war leider ungeprüft, F1 gibt Auskunft

(StringFind(text, " buy now  ")!=-1 || StringFind(text, " buy.now  ")!=-1)
Carl Schreiber
Moderator
7827
Carl Schreiber  
Mohamed Ben Haddou:

Mit der (oder) verknüpfung ||  lässt sich der code leider nicht verkürzen.

Nur nach buy suchen geht leider nicht, weil buy limit und buy stop auch da sind.

na, dann mach's doch so:

int buy = StringFind(text, " buy"),
    sel = StringFind(text, " sell"),
    now = StringFind(text, "now"),
    lim = StringFind(text, "limit"),
    stp = StringFind(text, "stop");

if ( buy != -1 && now != -1) /* hurraaahh*/ buyNow();
Einloggen oder registrieren, um einen Kommentar zu schreiben