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

 

Buona sera! Mi dispiace, credo di averti già fatto una domanda da qualche parte. Uno con un takeprofit, e un trailing stop dovrebbe funzionare per l'altro.

Non appena uno prende un takeprofit, un trailing stop inizia a funzionare per l'altro. Beh, inizia a funzionare immediatamente quando entrambi gli ordini sono stati effettuati!

//***************************************   
 
  nahodka=false;
 
 
 if (OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY)) { 
 if (OrderTakeProfit( )-3*Point<profitsell&&OrderTakeProfit( )+3*Point>profitsell) nahodka=true;}
     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tecket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )>Bid+treylingstop*Point ){ Print ("четвёртаямодифи    " );
 OrderModify(  tecket, OrderOpenPrice(), Bid+treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
  // Модифицируем оставшийся ордер

Come e cosa sceglie OrderSelect, se l'ordine con il biglietto non è ancora nella storia?

 
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
               
               //EMA – период 10 пересекает с верху в низ EMA – период 200 , CCI пересекает уровень
 0,100 или-100 с вверху в низ; Свеча закрывается или находится ниже LMA – период 100
 
 bool CCInapravlenie=false;
 if(( CCI_50S>100&&CCI_50<100) ||(CCI_50S>0&&CCI_50<0)||( CCI_50S>-100&&CCI_50<-100 ) )CCInapravlenie=true;
 if(EMA_10S>EMA_20S&&EMA_10<EMA_20&&CCInapravlenie&&LMA_100<Ask&&!sellistavili){
 
 RefreshRates();   
           tocket=OrderSend (Symbol( ), OP_SELL,   lot , NormalizeDouble (Bid, Digits), 5 ,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   NormalizeDouble( Bid-( teykprofit*Point),Digits),   NULL, 450, 0, CLR_NONE);
           Error=GetLastError();if (Error==0){  
           Sleep(2000); RefreshRates();  
           tecket=OrderSend (Symbol( ), OP_SELL,  lot ,NormalizeDouble(Bid, Digits), 5,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   0, NULL, 450, 0, CLR_NONE); 
           if (Error==0){ profitsell = NormalizeDouble( Bid-( teykprofit*Point),Digits); tsenasell=Bid;  
           sellistavili= true; perenossell= false;  }}}
           
           if (Error!=0){  errorcomment = "Ошибка открытия  ордера OP_SELL"  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
 
 
 if(tsenasell-30*Point>Bid&&!perenossell){Print ("третямодифи    " );
 OrderSelect( tocket, SELECT_BY_TICKET ); 
Posizionamento
 
Dimka-novitsek:

Buona sera! Mi dispiace, credo di averti già fatto una domanda da qualche parte. Uno con un takeprofit, e un trailing stop dovrebbe funzionare per l'altro.

Non appena uno prende un takeprofit, un trailing stop inizia a funzionare per l'altro. Bene, inizia a funzionare immediatamente quando entrambi gli ordini sono stati effettuati!

Come e cosa seleziona OrderSelect, se l'ordine con il biglietto non è ancora nella storia?

Nel ciclo, passa attraverso la storiaOrderSelect(index, SELECT_BY_POS , MODE_HISTORY), confrontando il valore di tocket con il biglietto dell'ordine selezionato.

OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY) restituirà true se l'ordine con questo biglietto è presente nel terminale.

Pool - fonte di dati per la selezione. Si usa quando il parametro select è uguale a SELECT_BY_POS. Può essere uno dei seguenti valori:

MODE_TRADES (predefinito) - l'ordine viene selezionato tra quelli aperti e in sospeso,

MODE_HISTORY - l'ordine è selezionato tra gli ordini chiusi e cancellati.

E per sicurezza, mettiNormalizeDouble(Bid+treylingstop*Point, Digits)

 
Grazie!!! Vado a pasticciare con il mio codice!
 
Quale Expert Advisor è il migliore da usare per visualizzare il trading. Anche in questo caso, è auspicabile essere in grado di utilizzare diversi TF allo stesso tempo. Grazie!
 

finito l'assessore! fa quello che vuole... ma...

Il primo pensiero che mi è venuto in mente: come funziona il tester con la storia commerciale? Per esempio, se c'è la condizione "se 2 ultime barre erano in perdita - non comprare", non è sufficiente che il mio Expert Advisor ignori questa condizione (può essere un errore - ci penserò). Ma cosa succederà quando il Tester aprirà i suoi affari (che sono già assenti nella storia del terminale)? A quali ticker si applicherà e in quale storia? il tester non sembra assegnare i ticker alle compravendite! il tester forma la propria storia delle compravendite?

 
lottamer:

finito l'assessore! fa quello che vuole... ma...

Il primo pensiero che mi è venuto in mente: come funziona il tester con la storia commerciale? Per esempio, se c'è la condizione "se 2 ultime barre erano in perdita - non comprare". Non solo, ma il mio Expert Advisor ignora questa condizione (forse un errore - ci ripenserò). Ma cosa succederà quando il Tester aprirà i suoi affari (che sono già assenti nella storia del terminale)? A quali ticker si applicherà e in quale storia? il tester non sembra assegnare i ticker alle compravendite! il tester forma la propria storia delle compravendite?


tutto è assegnato - guarda la scheda "risultati". ma il tester non fa miracoli - devi sapere come usarlo
 
YOUNGA:

tutto è assegnato - guarda la scheda "risultati". ma il tester non fa miracoli - devi sapere come usarlo.

non c'è un ticker a più cifre come nella vita reale. C'è un numero di serie dell'affare. Dicevi sul serio?
 
lottamer:

Non c'è un ticker multivalutato come nel trading reale. C'è un numero consecutivo di un accordo. Dicevi sul serio?


Se ci fossero tanti ordini nel tester quanti ne conta il server, anche i dati sarebbero a più cifre.

Il tester, proprio come il server, assegna ad ogni nuovo ordine un numero di ticker unico, ma il server lo fa da quando la società di brokeraggio è stata fondata, per tutti i suoi clienti e per tutti gli strumenti.

 
int Count=0;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperta|
//+------------------------------------------------------------------+
int init()
{
Alert ("La funzione init() non è riuscita all'avvio");
return;
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto|
//+------------------------------------------------------------------+
int start()
{
double Price = Bid;
Count++;
Alert("New Tick ",Count," Price = ",Price);
return;
}
//+------------------------------------------------------------------+
int deinit()
{
Alert ("Deinit() triggered on unloading");
return;

}

Per quanto ho capito, in questo script ad ogni nuovo prezzo Bid dovrebbe apparire un messaggio ......, ma non è ..... cosa c'è di sbagliato? ...cosa fare?

Motivazione: