Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 756

 
ssn1:
Sono abituato al mio sistema di archiviazione.
Sono già sopravvissuto tranquillamente con il Keeper: la distruzione del disco rigido del mio PC, il fallimento del mio portatile. E non ho perso un solo byte del mio codice. Il Vault è conveniente.
 

Buon pomeriggio.

Ho scritto un programma di esercizi. Non funziona per qualche motivo.

L'ho testato nello strategy tester tra il 29 settembre e il 15 ottobre.

Il programma dovrebbe funzionare così: faccio un acquisto. Quando il prezzo scende di 0,010 dovrebbe vendere con una perdita.

Si verifica un acquisto. Non c'è nessuna vendita. Inizio la visualizzazione e vedo che il prezzo non è solo 0,010 più basso, ma molto più alto. Strano.

// -------- variabili --- Iniziare -----
extern double L1=0.01; // dimensione del lotto per l'acquisto
extern double L1n=0.01; // dimensione del lotto per l'acquisto (lotto normalizzato)
extern double AktualAsk=0.0; // prezzo di offerta corrente
extern double AktualBid=0.0; // prezzo di vendita effettivo
extern int int ticketlackmus=1; // indicatore di apertura dell'ordine con successo.
extern int int ticket1=0; // biglietto
extern bool PozOtk1=true;
// -------- variabili --- Fine -----
int init()
{
ritorno(0);
}


int start()
{
se (PozOtk1==true)
{
//posizione aperta
ticketlackmus=1;
mentre (ticketlackmus>0)
{
Avviso (" Aprire la prima posizione ");
RefreshRates();// Aggiorna i dati
AktualAsk=NormalizeDouble(Ask,Digits); //per il prezzo
L1n=NormalizeDouble(L1,2); //per il lotto.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, CLR_NONE);
se (ticket1>0) ticketlackmus=-1;
{
Alert (" ORDER OPEN ", ticket1, ", ticketlackmus);
}
}
PozOtk1=falso;
Alert (" PozOtk1 ", PozOtk1);
}

RefreshRates();// RefreshRates()
AktualBid=NormalizeDouble(Bid,Digits); //per il prezzo
if (AktualBid<=AktualAsk-0.010 && PozOtk1==false)
{
RefreshRates(); // Aggiorna i dati
OrderSelect(ticket1, SELECT_BY_TICKET;)
L1n=NormalizeDouble(L1,2); //per il lotto
OrderClose (ticket1, L1n, AktualBid, 5);
PozOtk1=true;
}

ritorno(0);
}

int deinit()
{
ritorno(0);
}


Ozero.

 

Si prega di utilizzare il pulsante magico SRC quando si inserisce il codice:

Inserire correttamente il codice nel forum

 
// -------- переменные --- Н -----
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);
   } 

 

Se una posizione è aperta su un certo simbolo (in questo caso - "GBPUSD"), allora è consigliabile prendere tutti i dati su questo simbolo attraverso marketinfo, cioè non solo AktualAsk=NormalizeDouble(Ask,Digits ); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);

E così qualsiasi dato di mercato dovrebbe essere preso, al fine di evitare.

 
// -------- переменные --- Н -----
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:

Se si apre una posizione su un simbolo specifico (in questo caso - "GBPUSD"), allora è auspicabile prendere tutti i dati anche su questo simbolo tramite marketinfo, cioè non solo AktualAsk=NormalizeDouble(Ask,Digits); aktualAsk=MarketInfo( "GBPUSD",MODE_ASK);

E così qualsiasi dato di mercato dovrebbe essere preso, per evitare.

Grazie, Evillive!

Ho fatto dei cambiamenti. Ma ho già iniziato a comprare. Nessuna vendita dopo le modifiche. M15 test dal 30 settembre 2014 a metà ottobre.



 
Ozero:

Grazie, Evillive!

Fatto il cambiamento. Ma l'acquisto andava avanti lo stesso. Dopo le modifiche, non c'è vendita. M15 test dal 30 settembre 2014 a metà ottobre.



Trova dove nel codice di cui sopra potrebbe esserci una vendita
 
OrderClose (ticket1, L1n, AktualBid, 5);
 
Ozero:
Questa è la chiusura dell'ordine. Dov'è l'apertura dell'ordine di vendita. Non è nel codice di cui sopra
 
Intendevo dire che l'ordine non si chiude :( Scusa se non l'ho messa in questo modo, sono un novellino.