[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 846

 
serjik77:

Vi prego di scusarmi se vi sto distraendo con una domanda probabilmente stupida.

Ho appena iniziato a imparare questo e non ho nessuno a cui chiedere consigli.

Ho letto il manuale alcune volte. Ho iniziato un Expert Advisor con le funzioni più semplici, ordini pendenti.

Non ho ancora capito cosa devo fare per aprire gli ordini una volta sola e non ad ogni tick.



Inserisci una funzione come questa

int ChPos( int type_H_L) 
{
// возвращает кол-во позици которые открыты 
   int i;
   int col;
   int count=0 ;
   for( i=0; i < OrdersTotal(); i++)         
   {
      if(OrderSelect(i,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && type_H_L==OP_BUY && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELL && type_H_L==OP_SELL && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_BUYSTOP && type_H_L==OP_BUYSTOP && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELLSTOP && type_H_L==OP_SELLSTOP && OrderMagicNumber()== magic){count++;}
           
       }
    }   
return(count);
}

Nel tuo codice, controlla in questo modo, per esempio

if ( SignalLine > MainLine && ChPos(OP_BUY)==0 )
      { // если сигнальная линия выше основной и нет длинной позы . то закрыть короткую открыть длинную
         if (ChPos(OP_SELL)>0 ) ClosePosition(OP_SELL) ;
         OpenPosition(OP_BUY)  ;
 
Chiudo le posizioni non redditizie senza rompere l'equilibrio nel gap rimuovendo i TP degli ordini aperti. Purtroppo, TP=0, anche se ho un messaggio molto fastidioso nel log:
<br / translate="no"> 2010.09.12 21:34:53 2000.03.06 07:59 money EURUSD,M5: OrderModify error 1

codice:

bool notakeprofit()
{   bool ok=true;
    int k=OrdersTotal();
    for (int i=k-1; i >=0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_368)
        {OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(),NormalizeDouble(0,Point), OrderExpiration(), CLR_NONE);
         }
    else;
       // { Print("OrderSelect() error - ",GetLastError()); ok=false;}
    }
return(ok);
}

A causa della necessità di assicurarsi nel codice principale che tutti gli ordini a mercato abbiano TP=0 controllo il risultato di questa funzione - ok, nel codice si può vedere che ok - cambia solo quando c'è un errore

AIUTATEMI PLZ! :)

grazie in anticipo

 
abolk:

Nel mio caso, la regola è: "Separare NOT in sostantivi, aggettivi e avverbi, se c'è o si intende una contraddizione" http://www.rusyaz.ru/pr/od07.html - "fare" è NOT - la parola corretta è " fare" (la parola evidenziata è una contraddizione ed è preceduta da un trattino).

state interpretando male la lingua russa (!). Un "non" separato verrebbe scritto nel caso di:

"fare" NON è corretto, ma cattivo. - è in questo senso che si intende opporsi. Guarda gli esempi per la regola.

Nella tua frase, NON deve essere scritto con una congiunzione (vale il paragrafo 3 del paragrafo 88 nella stessa pagina):

"to do" è scritto male, " to do" è corretto .

 

C'è un indicatore MACD standard. come si usa per testare sulla storia?

c'è un esempio?

 
IgorM:
Chiudo le posizioni in perdita, quindi non voglio rompere un equilibrio nella posizione, ma devo rimuovere il TP, ahimè, TP=0, anche se devo continuare a scrivere molte volte nel mio diario:

codice:

A causa della necessità di assicurarsi nel codice principale che tutti gli ordini a mercato abbiano TP=0 controllo il risultato di questa funzione - ok, nel codice si può vedere che ok - cambia solo quando c'è un errore

AIUTATEMI PLZ! :)

grazie in anticipo

Forse non NormalizeDouble(0,Point) ma NormalizeDouble(0,Digits)?

 
chief2000:

Forse non NormalizeDouble(0,Point) ma NormalizeDouble(0,Digits)?


Grazie, l'ho trovato io stesso, ma non ha risolto l'errore #1

 
IgorM:


Grazie, l'ho trovato io stesso, ma non ha risolto l'errore #1.

La prima cosa che farei è sostituire qualche altro numero in TP al posto di zero (per eliminare l'errore) per assicurarmi che sia quello il motivo.

 
chief2000:

La prima cosa che farei è sostituire qualche altro numero in TP al posto di zero (per eliminare l'errore) per assicurarmi che sia quello il motivo.


funzionava bene fino a quando ho scritto questa funzione, ora chiamo la funzione di Kim invece di OrderModify():

void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0)

l'errore è sparito

 

c'è un indicatore di tipo osma, il segnale è invertito quando attraversa 0. come faccio a testarlo sulla storia?

 
ivandurak:


Inserire questa funzione

E nel tuo codice, fai un controllo come questo

Mi scusi, ma se posso, un'altra domanda?

Comincio a capire qualcosa, ma non tutto.

La prima funzione dice all'applicazione quanti ordini aperti ha?

Per favore, consigliate come far apparire solo due pendenti in modo permanente,

indipendentemente da quelli attivati.