Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 351
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
for (int i = 0; i<=OrdersTotal(); i++)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderProfit()>= NormalizeDouble (TP*Point,Digits))
{
if (OrderType() == OP_BUY)
double Lots = OrderLots();
double HalfLot = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
if (OrderType() == OP_SELL)
double Lots1 = OrderLots();
double HalfLot1 = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
}
}
}
}
Oh, e come faccio a far funzionare questa funzione solo una volta per ordine aperto?
Per favore, aiutatemi a correggere gli errori in questa funzione. Mi ha già spremuto tutto il succo. L'essenza della funzione, quando raggiunge un certo profitto, la funzione dovrebbe chiudere la metà dell'ordine.
Oh, e come faccio a far funzionare questa funzione solo una volta per ordine aperto?
Per favore, aiutatemi a correggere gli errori in questa funzione. Mi ha già spremuto tutto il succo. L'essenza della funzione, quando raggiunge un certo profitto, la funzione dovrebbe chiudere la metà dell'ordine.
void CloseHalfOrder(){
for (int i = 0; i<=OrdersTotal(); i++)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){//Нефига тут профиту делать, это так, для убыстрения....
if(OrderProfit()>= NormalizeDouble (TP*Point,Digits)) //А тут вообще непонятки что с чем сравниваете....
{
if (OrderType() == OP_BUY)
double Lots = OrderLots();
double HalfLot = NormalizeDouble (Lots*0.5,2);// Тут озаботится чтобы лот не стал меньше минимального
OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
if (OrderType() == OP_SELL)
double Lots1 = OrderLots();
double HalfLot1 = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
}
}
}
}
}
Oh, e come faccio a far funzionare questa funzione solo una volta per ordine aperto?
Potete vedere il principio degli ordini di chiusura parziale qui.
Grazie. Ma voglio ancora capire i miei errori prima di tutto. Sto ancora imparando. Inoltre, credo di essere molto vicino alla verità.
un'altra volta... La funzione non funziona. Voglio capire gli errori. + come farlo scattare solo 1 volta per 1 ordine aperto? Grazie mille in anticipo)
un'altra volta... La funzione non funziona. Voglio capire gli errori. + come farlo scattare solo 1 volta per 1 ordine aperto?
La condizione una volta per un ordine non è molto chiara. Bene, probabilmente dovremo usare variabili globali qui. Forse c'è più di un ordine, e solo una volta per ciascuno?
un'altra volta... La funzione non funziona. Voglio capire gli errori. + come farlo scattare solo 1 volta per 1 ordine aperto?
Ho la seguente situazione. Ci sono diversi moduli nell'EA, ogni modulo prende diverse funzioni personalizzate. Per non affogare nel codice, ho deciso di mettere ogni modulo in script. Ecco la variante di chiamare lo script dall'Expert Advisor. Il prossimo problema sorge però: quando chiamo lo script, ho bisogno di passargli alcuni parametri. Possiamo usare variabili globali. Quali altre varianti si possono suggerire?
Ve lo dico subito: la variante "più semplice" tramite iCustom() non mi soddisfa, per due motivi. In primo luogo, la chiamata del modulo dovrebbe essere occasionale in memoria, non costante. In secondo luogo, non uso gli array di indicatori.
La condizione una volta per un ordine non è molto chiara. Beh, probabilmente dovrete usare le variabili globali qui. Possono esserci più ordini e solo una volta per ciascuno?
Ci può essere solo un ordine nel mercato. Al momento, questa funzione non funziona affatto... per qualche motivo. Ma se funzionerà correttamente, capisco che sarà attivato tutto il tempo, fino a quando il profitto è superiore alla quantità di pip impostata. Naturalmente, ci serve per chiudere metà di una posizione una volta, e basta. Ma vorrei che funzionasse almeno una volta).
Ho la seguente situazione. Ci sono diversi moduli nell'EA, ogni modulo prende diverse funzioni personalizzate. Per non affogare nel codice, ho deciso di mettere ogni modulo in script. Ecco la variante di chiamare lo script dall'Expert Advisor. Il prossimo problema sorge però: quando chiamo lo script, ho bisogno di passargli alcuni parametri. Possiamo usare variabili globali. Quali altre varianti si possono suggerire?
Ve lo dico subito: la variante "più semplice" tramite iCustom() non mi soddisfa, per due motivi. In primo luogo, la chiamata del modulo dovrebbe essere occasionale in memoria, non costante. In secondo luogo, non uso gli array di indicatori.
Una biblioteca è un'opzione.