[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 768
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
Ho solo bisogno di chiamare la funzione, è tutto ciò di cui ho bisogno è una linea "Se ci sono più ordini di uno .... e questo è tutto" - e tu mi stai offrendo un'intera funzione
Ecco come memorizzo i dati del mio ordine
È semplice, mettetelo nella biblioteca.
Il tipo di ordine da contare e il suo master sono dati come input, restituisce il numero di ordini aperti o impostati.
Potete usarlo nel seguente modo
se ((FastEma - SmallEma) > Compartor*Point && ChPos(OP_BUY,1111) < OpenPosition)
Non è complicato metterlo nella biblioteca.
L'input è il tipo di ordine da contare e il suo master, restituisce il numero di ordini aperti o impostati.
Questo può essere usato nel seguente modo
se ((FastEma - SmallEma) > Compartor*Point && ChPos(OP_BUY,1111) < OpenPosition)
Ho una tale funzione e non ne ho bisogno, ho solo bisogno di
solo una linea "se ci sono più ordini di uno .... poi" e questo è tutto
i miei dati per la stessa funzione che hai mostrato sono memorizzati qui
ed ecco come appare
Credo di aver capito.
static int aaa = OrdersHistoryTotal()+ OrdersTotal()
se (la tua condizione && aaa < OrdersHistoryTotal()+ OrdersTotal() )
{
operatori
aaa=OrdersHistoryTotal()+ OrdersTotal()
}
Se è così, è ancora meglio metterlo in una funzione con i maghi in mente. Può dirci a cosa sta lavorando? La logica è un po' strana se ho capito bene, quando si apre un altro ordine, non è più facile aprire ordini non più grandi di OpenPosition?
La tua funzione restituisce il numero totale di ordini aperti e di ordini pendenti piazzati. Quanti ordini OP_BUY, se c'è OP_BUYLIMIT OP_SELLLIMIT OP_SELL ecc. non si vede.
L'ho capito, ora il problema con la funzione if è che non so quale sia il problema.
il punto è che il primo valore viene eseguito.
Questo non funziona se (HaveBuyLimitOrderEnd== true)
{ModifyBuyStopOrder(PRAskS); // Seleziona
} }
in parole povere, se c'è un ordine HaveBuyLimitOrderEnd, modificarlo con un cambiamento di prezzo PRAskS
Non riesco a capire cosa c'è di sbagliato. Il valore di HaveBuyLimitOrderEnd è preso da void Myorders() nel codice sopra
il valore if(bt==1&&bl==7) è principale, quindi se è vero, usate tutti i seguenti
molto probabilmente haveBuyLimitOrderEnd== true perché ho impostato OrderLots()==3*Lot tutto funziona solo che modifica gli ordini con 0.3 lot
Notate cosa è evidenziato in rosso. Il tipo di ordini commerciali è lo stesso e le variabili nel tubo sono impostate diversamente, dovrebbe essere così.
Sì, dovrebbe essere, perché ci sono diverse funzioni di apertura e non faccio una richiesta per OrderType () e richiesto il flag se è aperto, ma il problema non è piuttosto in questa funzione perché le altre richieste anche non funzionano questo ho gettato prima, e sulla stessa funzione aperto NORMALMENTE
QUINDI IL PROBLEMA È CON LA RICHIESTA NELL'OPERATORE
Il problema sembra essere altrove. Ma probabilmente dovreste vedere il codice.
Il problema sembra essere altrove. Ma credo di aver bisogno di vedere il codice.
Sicuramente non è altrove, tutto il resto funziona, il problema è che la richiesta (HaveBuyLimitOrderEnd== true) è sbagliata, quindi mi sto chiedendo come altro dirgli di modificare e cancellare,
o la query stessa è sbagliata
se(bs==1&&bl==3)
{OpenBuyLimitOrderEnd(Lot*15,PRAskL);
se (HaveBuyLimitOrderEnd== true)
{ModifyBuyStopOrder(PRAskS);
} }
Sì, dovrebbe essere, perché ci sono diverse funzioni di apertura e non faccio una richiesta per OrderType () e richiesto il flag se è aperto, ma il problema non è molto probabilmente in questa funzione perché le altre richieste anche non funzionano questo ho gettato prima, e sulla stessa funzione aperto NORMALMENTE
QUINDI IL PROBLEMA È CON LA QUERY NELL'OPERATORE
Mi chiedo se nelle funzioni segnate in rosso HaveBuyLimitOrderEnd è impostato nel tubo. Se no, è necessario chiamare Myorders() prima di if. Altrimenti non sapete cosa c'è. E per sicurezza, le bandiere (variabili)
HaveBuyOrder = false;
HaveSellOrder = false;
HaveBuyStopOrder = false;
HaveSellStopOrder = false;
HaveBuyLimitOrder = false;
HaveSellLimitOrder = false;
HaveBuyLimitOrderEnd = false;
HaveSellLimitOrderEnd = false;
deve essere definito a livello globale.
Mi chiedo se il flag HaveBuyLimitOrderEnd è impostato in rosso nel tubo. Se no, è necessario chiamare Myorders() prima di if. Altrimenti non si sa cosa c'è. E per sicurezza, le bandiere (variabili)
HaveBuyOrder = false;
HaveSellOrder = false;
HaveBuyStopOrder = false;
HaveSellStopOrder = false;
HaveBuyLimitOrder = false;
HaveSellLimitOrder = false;
HaveBuyLimitOrderEnd = false;
HaveSellLimitOrderEnd = false;
deve essere definito globalmente.
è a livello glabale
bool HaveBuyOrder; // flag se ci sono ordini di acquisto sul mercato aperto
bool HaveSellOrder; // flag degli ordini di mercato aperti da vendere
bool HaveBuyStopOrder; // bandiera degli ordini di acquisto pendenti aperti
bool HaveSellStopOrder; // bandiera degli ordini di vendita pendenti aperti
bool HaveBuyLimitOrder; // bandiera degli ordini di acquisto pendenti aperti
bool HaveSellLimitOrder; // bandiera degli ordini di vendita pendenti aperti
bool HaveBuyLimitOrderEnd; // bandiera della presenza di ordini di acquisto pendenti aperti
bool HaveSellLimitOrderEnd; // segnala gli ordini di vendita pendenti aperti
è nella funzione di apertura dell'ordine.
ticket = OrderSend(Curr_symb,OP_BUYSTOP, Lot, PRAskS, Slippage, SL, TP, 0, Magic, 0, CLR_NONE);
se (biglietto > 0) {
HaveBuyStopOrder = true;
se (OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES)) Print("funzione per piazzare un ordine BuyStop: ", OrderOpenPrice())
}
else Print("Error # ", GetLastError(), " function for placing BuyStop order",MarketInfo(Curr_symb,MODE_ASK));
return(ticket);
}
QUINDI TUTTO IL RESTO FUNZIONA