Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 756

 
ssn1:
Ich bin an mein eigenes Archivierungssystem gewöhnt.
Ich habe mit dem Keeper schon einiges sicher überstanden: die Zerstörung der Festplatte meines PCs, den Ausfall meines Laptops. Und ich habe nicht ein einziges Byte meines Codes verloren. Der Tresor ist praktisch.
 

Guten Tag.

Ich habe ein Übungsprogramm geschrieben. Aus irgendeinem Grund funktioniert es nicht.

Ich habe sie zwischen dem 29. September und dem 15. Oktober im Strategietester getestet.

Das Programm sollte folgendermaßen funktionieren: Ich mache einen Kauf. Wenn der Kurs um 0,010 fällt, sollte er mit Verlust verkaufen.

Es kommt zu einem Kauf. Es findet kein Verkauf statt. Ich beginne mit der Visualisierung und sehe, dass der Preis nicht nur um 0,010 niedriger, sondern viel höher ist. Seltsam.

// -------- Variablen --- Start -----
extern double L1=0.01; // Losgröße für den Kauf
extern double L1n=0.01; // Losgröße für den Kauf (normalisiertes Los)
extern double AktualAsk=0.0; // aktueller Geldkurs
extern double AktualBid=0.0; // tatsächlicher Verkaufspreis
extern int int ticketlackmus=1; // Indikator für erfolgreiche Auftragseröffnung.
extern int ticket1=0; // ticket
extern bool PozOtk1=true;
// -------- Variablen --- Ende -----
int init()
{
zurück(0);
}


int start()
{
wenn (PozOtk1==true)
{
//offene Position
ticketlackmus=1;
while (ticketlackmus>0)
{
Alert ("Erste Position öffnen");
RefreshRates();// Daten aktualisieren
AktualAsk=NormalizeDouble(Ask,Digits); //für Preis
L1n=NormalizeDouble(L1,2); //für die Partie.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);
if (ticket1>0) ticketlackmus=-1;
{
Alert (" ORDER OPEN ", ticket1, ", ticketlackmus);
}
}
PozOtk1=false;
Alert (" PozOtk1 ", PozOtk1);
}

RefreshRates();// RefreshRates()
AktualBid=NormalizeDouble(Bid,Digits); //für Preis
if (AktualBid<=AktualAsk-0.010 && PozOtk1==false)
{
RefreshRates(); // Daten auffrischen
OrderSelect(ticket1, SELECT_BY_TICKET;)
L1n=NormalizeDouble(L1,2); //für die Partie
OrderClose (ticket1, L1n, AktualBid, 5);
PozOtk1=true;
}

zurück(0);
}

int deinit()
{
zurück(0);
}


Ozero.

 

Bitte verwenden Sie beim Einfügen des Codes die magische SRC-Taste:

Code korrekt in das Forum einfügen

 
// -------- переменные --- Н -----
extern double L1=0.01;            // размер лота для покупки 
extern double L1n=0.01;           // размер лота для покупки 
extern double AktualAsk=0.0;
extern double AktualBid=0.0;
extern int ticketlackmus=1;       // "лакмусовая бумажка" успешности откарытия ордера
extern int ticket1=0;             // тикет 
extern bool PozOtk1=true;
// -------- переменные --- К ----- 
int init() 
   {
      return(0);
   }


int start()    
   {
      if (PozOtk1==true) 
         {     
// Открытие позиции
             ticketlackmus=1;
             while (ticketlackmus>0)
                {
     Alert (" Открытие первой позиции ");
                   RefreshRates();                                        // Обновление данных 
                   AktualAsk=NormalizeDouble(Ask,Digits); //для цены
                   L1n=NormalizeDouble(L1,2); //для лота.
                   ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);    
                   if (ticket1>0) ticketlackmus=-1;
                   {
                   Alert (" ОРДЕР ОТКРЫТ ", ticket1, "  ", ticketlackmus);
                   }
                }
             PozOtk1=false; 
             Alert (" PozOtk1 ", PozOtk1);
          }

      RefreshRates();                                        // Обновление данных 
      AktualBid=NormalizeDouble(Bid,Digits); //для цены
           if (AktualBid<=AktualAsk-0.010 && PozOtk1==false)
       {                              
                     RefreshRates();    // Обновление данных 
                     OrderSelect(ticket1, SELECT_BY_TICKET);   
                     L1n=NormalizeDouble(L1,2); //для лота
                     OrderClose (ticket1, L1n, AktualBid, 5);
                     PozOtk1=true; 
       }

return(0);
   }



int deinit()                                   
   {
      return(0);
   } 

 

Wenn eine Position auf ein bestimmtes Symbol (in diesem Fall "GBPUSD") eröffnet wird , dann ist es ratsam, alle Daten auch für dieses Symbol über marketinfo zu übernehmen, d.h. nicht nur AktualAsk=NormalizeDouble(Ask,Digits ); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);

Und so sollten alle Marktdaten genommen werden, um zu vermeiden.

 
// -------- переменные --- Н -----
extern double L1=0.01;            // размер лота для покупки 
extern double L1n=0.01;           // размер лота для покупки 
extern double AktualAsk=0.0;
extern double AktualBid=0.0;
extern int ticketlackmus=1;       // "лакмусовая бумажка" успешности откарытия ордера
extern int ticket1=0;             // тикет 
extern bool PozOtk1=true;
// -------- переменные --- К ----- 
int init() 
   {
      return(0);
   }


int start()    
   {
      if (PozOtk1==true) 
         {     
// Открытие позиции
             ticketlackmus=1;
             while (ticketlackmus>0)
                {
     Alert (" Открытие первой позиции ");
                   RefreshRates();                                        // Обновление данных 
                   //AktualAsk=NormalizeDouble(Ask,Digits); //для цены
                   AktualAsk=MarketInfo( "GBPUSD",MODE_ASK);
                   L1n=NormalizeDouble(L1,2); //для лота.
                   ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);    
                   if (ticket1>0) ticketlackmus=-1;
                   {
                   Alert (" ОРДЕР ОТКРЫТ ", ticket1, "  ", ticketlackmus);
                   }
                }
             PozOtk1=false; 
             Alert (" PozOtk1 ", PozOtk1);
          }

      RefreshRates();                                        // Обновление данных 
      AktualBid=NormalizeDouble(Bid,Digits); //для цены
           if (AktualBid>=AktualAsk+0.010 && PozOtk1==false)
       {                              
                     RefreshRates();    // Обновление данных 
                     OrderSelect(ticket1, SELECT_BY_TICKET);   
                     L1n=NormalizeDouble(L1,2); //для лота
                     OrderClose (ticket1, L1n, AktualBid, 5);
                     PozOtk1=true; 
       }

return(0);
   }



int deinit()                                   
   {
      return(0);
   } 
evillive:

Wenn eine Position auf ein bestimmtes Symbol (in diesem Fall "GBPUSD") eröffnet wird , dann ist es ratsam, alle Daten auch auf dieses Symbol über MarketInfo zu übernehmen, d.h. nicht nur AktualAsk=NormalizeDouble(Ask,Digits); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);

Und so sollten alle Marktdaten genommen werden, um zu vermeiden.

Vielen Dank, Evillive!

Ich habe Änderungen vorgenommen. Aber ich habe bereits mit dem Kauf begonnen. Kein Verkauf nach den Änderungen. M15-Test vom 30. September 2014 bis Mitte Oktober.



 
Ozero:

Danke, Evillive!

Ich habe die Änderung vorgenommen. Aber der Kauf wurde trotzdem getätigt. Kein Verkauf nach der Änderung. M15-Test vom 30. September 2014 bis Mitte Oktober.



Finden Sie heraus, wo im obigen Code ein Verkauf stattfinden könnte
 
OrderClose (ticket1, L1n, AktualBid, 5);
 
Ozero:
Dies ist der Abschluss der Bestellung. Wo ist die Eröffnung des Verkaufsauftrags. Es ist nicht im obigen Code enthalten
 
Ich meinte, dass die Bestellung nicht geschlossen wird :( Tut mir leid, wenn ich es nicht so ausgedrückt habe, ich bin neu in diesem Bereich.