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

 
i999i:
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?

Probabilmente attivate"allow EA to trade" nelle impostazioni del terminale.
 

C'è un modo per modificare lo stop loss, ma lasciare il take profit su una linea (non menzionarlo, cioè deve rimanere come era impostato prima da altre funzioni)

OrderModify(OrderTicket(),0,stop_loss, ???, 0,CLR_NONE);

 
rigonich:


Se il tester avesse contato tanti ordini 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 d'ordine unico (ticket), ma il server lo fa dal momento in cui la casa di intermediazione è stata creata, per tutti i suoi clienti e per tutti gli strumenti.


Capito, grazie :)))
 
rigonich:
Probabilmente avete "allow EA to trade" nelle impostazioni del terminale.


Non aiuta
 
i999i:

Non aiuta

Scusate - tutta la classe .......grazie
 
lottamer:

C'è un modo per modificare lo stop loss, ma lasciare il take profit su una linea (non menzionarlo, cioè deve rimanere come era impostato prima da altre funzioni)

OrderModify(OrderTicket(),0,stop_loss, ???, 0,CLR_NONE);

OrderModify(OrderTicket(),OrderLots( ),stop_loss,OrderTakeProfit( ), 0,CLR_NONE);

Stop, quindi il tuo lotto è 0.

 
Anche questo ordine deve essere selezionato prima da OrderSelect. Altrimenti il biglietto può spesso diventare qualsiasi cosa.
 
Dimka-novitsek:
Anche questo ordine deve essere selezionato prima da OrderSelect. Altrimenti il biglietto può spesso diventare qualsiasi cosa.

Sì, il biglietto sarà quello da voi indicato, ma i valoriOrderLots( ) eOrderTakeProfit( ), possono essere restituiti per qualsiasi ordine.
 

Buongiorno!

Non riesco categoricamente a capirlo - le condizioni per il trailing stop non funzionano.

//***************************************   
 
 bool nahodka=false;
  
 if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
 if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;     // Находим ордер, сработавший именно по тейкпрофиту 
   
 if(nahodka){if (OrderSelect(tucket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )<Bid-treylingstop*Point ){ Print ("втораямодифи    " );
 OrderModify(  tucket, OrderOpenPrice(), Bid-treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 if (BUY == 0) {perenos=false;srabotka=false;nahodka=false;} 
 
 
 //*************************************** 
 
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL

Quindi, l'ordine viene tolto immediatamente quando non è ancora nella storia, cosa che non capisco affatto!

//***************************************   
 
  nahodka=false;
 
 for (i=0; i<=OrdersHistoryTotal(); i++) {
 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
 if (OrderSymbol()!=Symbol())continue; 
 if (OrderMagicNumber() != 450) continue; 
 if (tocket==OrderTicket()) 
 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);}}}
 for ( i = OrdersTotal() - 1; i >= 0; i--)

E questa è la situazione migliore! Se abbiamo questo trucco, almeno l'ordine viene corretto quando è già nella storia.

Ma una volta su cinque o dieci volte nahodka non prende il valorevero, e non si verifica un'ulteriore modifica!

 
Sì, come no!!!