Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
(Prima di provare a scrivere questo commento, penso di aver fatto ricerche approfondite per trovare la soluzione, sì, ho trovato thread simili, ma non ho trovato la soluzione per questo problema. )
Uso il seguente codice per l'ordine di vendita che mi mostra lo Stop Loss in pip, mi mostra il valore corretto fino a quando lo Stop Loss diventa positivo.
Quindi, non ho idea di come posso provare a risolvere questo problema.
Qualsiasi buon commento sarebbe meglio, per favore.
( nota: Non sto usando Trailing Stop per ora. Inoltre il codice qui sotto è solo per gli aggiornamenti delle informazioni, non per OrderSend() o cose simili. )
{
riskinpips=change_to_pips(OrderStopLoss()-OrderOpenPrice());
}
Print("stop loss in pips",DoubleToString(riskinpips,2));
Grazie in anticipo.
(nota: le etichette dello screenshot fatte dal programma di edizione delle foto per descrivere il mio problema)Beh, è il valore più alto meno il valore più basso che ti dà il risultato, quindi puoi controllare quale è il più alto
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Beh, è il valore più alto meno il valore più basso che ti dà il risultato, quindi puoi controllare qual è il più alto
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Mi rido da solo che non ci faccio mai caso. Penso che questo potrebbe aiutarmi. Presto lo proverò.
Grazie mille signor Marco
#Calcolo della valuta del profitto - Chiuso
Finora funziona perfettamente.
Grazie mille @Marco vd Heijden e @whroeder1
#Tempo - Aperto
Da quando ho iniziato a fare ricerche su Time / Clock per il mio EA. Vedo che gli autori usano JUST start() nell'indicatore per questo.
Io uso OnTimer() e OnTick() nel mio EA, non vorrei usare start().
Quindi ho solo bisogno di essere sicuro / imparare quale funzione speciale sarebbe meglio per la funzione Time and Clock?
Continuerò la ricerca su questo problema dopo 10 ore.
( nota: ho già trovato alcuni indicatori Time and Clock dalla pagina Codebase di Mql5.com - ma non mi piace copiare e incollare )
Qualsiasi buon commento, condivisione del forum e link e qualcos'altro sarebbe meglio per me.
Grazie in anticipo.
La funzione di avvio è sostituita da OnStart solo negli script. Negli Expert Advisor e negli indicatori dovrebbe essere rinominata rispettivamente in OnTick e OnCalculate. Il codice che deve essere eseguito durante un'operazione del programma mql5 dovrebbe trovarsi in queste tre funzioni:
Vedi: https://www.mql5.com/en/docs/migration
La funzione di avvio è sostituita da OnStart solo negli script. Negli Expert Advisor e negli indicatori dovrebbe essere rinominata rispettivamente in OnTick e OnCalculate. Il codice che deve essere eseguito durante il funzionamento di un programma mql5 dovrebbe trovarsi in queste tre funzioni:
#Tempo - Aperto
Da quando ho iniziato a fare ricerche su Time / Clock per il mio EA. Vedo che gli autori usano start() SOLO nell'indicatore per questo.
Io uso OnTimer() e OnTick() nel mio EA, non vorrei usare start().
Quindi ho solo bisogno di essere sicuro / imparare quale funzione speciale sarebbe meglio per la funzione Time and Clock?
Continuerò la ricerca su questo problema dopo 10 ore.
( nota: ho già trovato alcuni indicatori Time and Clock dalla pagina Codebase di Mql5.com - ma non mi piace copiare e incollare )
Qualsiasi buon commento, condivisione del forum e link e qualcos'altro sarebbe meglio per me.
Grazie in anticipo.
Usa OnTimer().
Usare TimeLocal() darà un aspetto migliore, ma non sarà sincronizzato con il fuso orario del broker.
Usando TimeCurrent() sarà sincronizzato con il vostro broker, ma potrebbe ritardare e "saltare" dei secondi a seconda di quando arrivano i tick. Questo esempio evidenzierà il problema:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
#Timer - Chiuso
Utilizzare OnTimer().
Usare TimeLocal() darà un aspetto migliore, ma non sarà sincronizzato con il fuso orario del broker.
Usare TimeCurrent() sarà sincronizzato con il vostro broker, ma potrebbe ritardare e "saltare" dei secondi a seconda di quando arrivano i tick. Questo esempio evidenzierà il problema:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
Forum sul trading, sistemi di trading automatizzati e strategie di trading di prova
expert advisor - domande varie
honest_knave, 2016.11.30 01:28
IMHO sarebbe meglio se tenessi tutti i tuoi calcoli di lotto insieme, piuttosto che dividerli tra OnChartEvent() e _lotCalc(). Una funzione che controlla min / max / step e fa l'incremento / decremento.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_lotSize = fmax(_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf( " | Lot: %.2f ", _lotSize );
return;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP );
//---
}
#Lot Step - ReOpen
@honest_knave- grazie per il tuo grande aiuto su Lot Size e Lot Step.
Quindi ho solo bisogno di migliorare questa parte di codice per quando " Lot Size >= ( Lot Step * 100 ) " che Lot Step aumenta di " Lot Step * 100 ".
if(sparam==lotbuttonplus)
{
if(lotsize>=(lotstep*100))
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep*10 : lotstep));
// global variable
infoupdate();
printf("Lot: %.2f ",lotsize);
ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
return;
}
Grazie in anticipo.