mql4 code Stringfind

 

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 " , "");
                     }
 
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.

 
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".. 

 
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  ")
 
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.

 
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)
 
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();
Grund der Beschwerde: