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

 
kilnart:

Ich möchte einen Expert Advisor für das Pincer-Muster schreiben.

Ich habe gewählt

Leider ist die Bedingung für mich falsch, denn "sl" ist auf 100,00000 gesetzt und "tp" ist ein Fehler.

Ich habe beschlossen, eine Bedingung hinzuzufügen, die 1 Tick berücksichtigt.

Das Ergebnis ist dasselbe. Wie kann ich mein Problem richtig lösen?

Sie haben eine Variable Step=100 ? Wenn ja, sehen Sie nach, was Sie weiter im Code erhalten.

 
      Step=MarketInfo(Symb,MODE_STOPLEVEL);
 
kilnart:

Schau, Semikolons (;),

  Low2=Low[iLowest(NULL,0,MODE_LOW,10,2)]    
  High2=High[iHighest(NULL,0,MODE_HIGH,10,2)] 
 
Es ist alles da, ich habe mir nur nicht viel dabei gedacht, als ich im Forum gepostet habe.
 
kilnart:
Es ist alles da, ich habe mir nur nicht viel dabei gedacht, als ich im Forum gepostet habe.
Hier ist Ihr Code, alles funktioniert.
//+------------------------------------------------------------------+
//|                                                     Проверка.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  bool bull_pincet=false;
  bool bear_pincet=false;
  double sl,tp;
  int Total=OrdersTotal(); 
  double Step=MarketInfo(Symbol(),MODE_STOPLEVEL);
//----
 double Low2=Low[iLowest(NULL,0,MODE_LOW,10,2)];    
 double High2=High[iHighest(NULL,0,MODE_HIGH,10,2)];     

if(Low[1]==Low2 ) bull_pincet=true;
if(High[1]==High2) bear_pincet=true;
   while(true)
      {
       
       if(Total==0 && bull_pincet==true)
        {
         sl=Low[1];
         if(sl<Step)sl=Step;
         tp=Ask+((Ask-sl)*2);
                  
         OrderSend(Symbol(),OP_BUY,0.01,Ask,3,sl,tp);
         return;
        }

        if(Total==0 && bear_pincet==true)
         {
          sl=High[1];
          if(sl<Step)sl=Step;
          tp=Bid-((sl-Bid)*2);
          OrderSend(Symbol(),OP_SELL,0.01,Bid,3,sl,tp);
          return;
         }
       break;
      }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Ich habe den Code kopiert und eingefügt, einige Fehler korrigiert und das Ergebnis ist das gleiche wie meins. Stop Loss liegt bei 100.00000
 
kopiert, eingefügt, einige Fehler korrigiert, das Ergebnis - der Code funktioniert im Tester mit 4 Ziffern:
int init() {return(0);}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){ return(0); }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  bool bull_pincet=false;
  bool bear_pincet=false;
  double sl,tp;
  int Total=OrdersTotal(); 
  double Step=MarketInfo(Symbol(),MODE_STOPLEVEL);
//----
double Low2=Low[iLowest(NULL,0,MODE_LOW,10,2)];    
double High2=High[iHighest(NULL,0,MODE_HIGH,10,2)];     

if(Low[1]==Low2 ) bull_pincet=true;
if(High[1]==High2) bear_pincet=true;
   while(true)
      {
       if(Total==0 && bull_pincet==true)
        {
         sl=Low[1];
         if(sl>Bid-Step*Point)sl=Bid-Step*Point;
        tp=Bid+Step*Point*2;
         
         //if(sl<Step)sl=Step;
        // tp=Ask+((Ask-sl)*2);
                  
         OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp);
         return;
        }

        if(Total==0 && bear_pincet==true)
         {
          sl=High[1];
          if(sl<Ask+Step*Point)sl=Ask+Step*Point;
         tp=Ask-Step*Point*2;
        //  if(sl<Step)sl=Step;
         // tp=Bid-((sl-Bid)*2);
          OrderSend(Symbol(),OP_SELL,0.1,Bid,3,sl,tp);
          return;
         }
       break;
      }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Fillelin:
Hier kann ich Ihnen einen ähnlichen SCRIPT anbieten .

Beschreibung im Code.

Ich danke Ihnen! Wenn es sich um ein Skript handelt, könnte es funktionieren - ein Skript kann als EA funktionieren, wenn man es an Experten weitergibt.

Was den EA betrifft, so ist es mir nicht gelungen, ihn zu kompilieren, da ich am Ende auf einige Fehler gestoßen bin:

'GetNameOP' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 31)
'ErrorDescription' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 49)
Auch nach Korrekturen fehlen 2 benutzerdefinierte Funktionen.
 
Roll:
kopiert, eingefügt, einige Fehler behoben, das Ergebnis ist, dass der Code im Tester mit 4 Ziffern funktioniert:

In Ordnung, gut gemacht. Mal sehen, ob step=0

  if(sl>Bid-Step*Point)sl=Bid-Step*Point;
  tp=Bid+Step*Point*2;

was sl und tp gleich sein wird.

Und die Person, die diese Frage aufgeworfen hat, sollte die Reihenfolge sl=0, tp=0 festlegen und sie dann ändern.

Das muss es sein.

 
Lians:

Ich danke Ihnen! Wenn es sich um ein Skript handelt, könnte es funktionieren - ein Skript kann als EA funktionieren, wenn man es an Experten weitergibt.

Was den Expert Advisor angeht, so konnte ich ihn nicht kompilieren und bin am Ende auf einige Fehler gestoßen:

'GetNameOP' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 31)
'ErrorDescription' - function is not defined C:\Program Files (x86)\IamFX MT4\experts\VirtTPSL-Tr_EA.mq4 (45, 49)
Auch nach den Korrekturen fehlen noch 2 benutzerdefinierte Funktionen.

Die Funktionen von Igor Kim

https://www.mql5.com/ru/forum/107476/page6#69097

Und 'ErrorDescription', fügen Sie es am Anfang des Codes ein

#include <stdlib.mqh>             // Стандартная библиотека