[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 10
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
Potete consigliarmi se è possibile determinare programmaticamente la possibilità di impostare uno stop loss/stake profit immediatamente all'apertura della posizione/impostazione di un ordine pendente o dopo?
Controllate in anticipo i livelli di stop e di profitto.
Gli identificatori di richiesta usati nella funzione MarketInfo(). Può essere uno dei seguenti valori:
Sto appena imparando a scrivere un EA, come molti dei miei primi EA su indicatori standard, ne ho appena scritto uno nuovo, ma ora ho complicato il mio compito. In generale, come fare, che nell'emergere di condizioni aperto una posizione e quando si chiude, prendiamo le stesse condizioni quando si salva il nuovo non ha aperto, e aperto solo quando le condizioni opposte, ecc Grazie!!!
c'è un esempio già pronto nell'aiuto
Precontrollare i livelli di stop e di impostazione dei profitti .
Non c'è nessun controllo in questa lista per alcuni tipi di conto. Ecco un paragrafo del regolamento delle operazioni di trading per i conti NDD:
3.3 Se una posizione viene aperta attraverso il terminale del cliente utilizzando un Expert Advisor, il cliente non può designare ordini di Stop Loss e/o Take Profit. Se il cliente desidera piazzare questi ordini, può farlo modificando una posizione esistente in conformità alle clausole 5.16 - 5.22 e 9.13 - 9.16.
Mi interessa sapere se questo può essere controllato programmaticamente. Da quanto ho capito, no. Dovete originariamente scrivere in un programma una funzione per aprire posizioni / impostare ordini pendenti, tenendo conto delle condizioni che sono impostate dal broker.Non c'è nessun controllo in questa lista per alcuni tipi di conto. Ecco un paragrafo del regolamento delle operazioni di trading per i conti NDD:
Non capisco bene le regole per impostare gli ordini, prova a giocare con la demo e vedi cosa puoi e non puoi fare. Per quanto ho capito nulla ti impedisce di impostare programmaticamente un ordine e poi modificarlo. Giusto è strano, a meno che tu non tagli la connessione dopo aver aperto una posizione senza lasciare alcuno stop.
Mi interessa sapere se questo può essere controllato programmaticamente. Da quanto ho capito, no. Inizialmente devi scrivere una funzione per aprire posizioni/impostare ordini pendenti nel programma, tenendo conto delle condizioni stabilite dal broker.Non c'è nessun controllo in questa lista per alcuni tipi di conto. Ecco un paragrafo del regolamento delle operazioni di trading per i conti NDD:
Non c'è nessun problema. Anche (se non per uso personale, perché si sa su quali conti (condizioni di trading e con chi) usarlo), ma se si invia l'EA per ordinare e il cliente non ha ancora deciso su quali conti e dove sarà utilizzato, anche su tipi di conto con la possibilità di impostare un take e stop immediato, allora di default produrre l'EA con valori zero di questi livelli quando si impostano tutti i tipi di ordini, poi con la loro modifica (funzionerà lì e lì), mentre, naturalmente, nessuno ha annullato i requisiti di controllo e le restrizioni a p.
Non capisco bene le regole per impostare gli ordini, provate a giocare con la demo, cosa potete e cosa no. Per quanto ho capito nulla ti impedisce di impostare programmaticamente un ordine e poi modificarlo. Giusto è strano, a meno che tu non tagli la connessione dopo aver aperto una posizione senza lasciare alcuno stop.
))) No. Lei mi fraintende completamente. Non ho scritto di "impostare programmaticamente", ho scritto di definire programmaticamente. Su alcuni tipi di conto non è possibile aprire immediatamente una posizione e impostare stop/stop, il che sarebbe preferibile/sicuro per me. Su mql5, se non mi sbaglio, sembra essere possibile determinarlo. Vorrei essere in grado di determinare questo e, a seconda della definizione, scegliere quale funzione utilizzare.
Non c'è nessun problema. Anche (se non per uso personale, perché si sa su quali conti (condizioni di trading e con chi) usarlo), ma se si fa un EA per ordinare e il cliente non ha ancora deciso su quali conti e dove lo userà, anche su tipi di conto con la possibilità di impostare subito un take e stop, allora si fa comunque un EA con valori nulli di questi livelli di default quando si impostano tutti i tipi di ordini, poi con la loro modifica (funzionerà lì e lì), mentre, ovviamente, nessuno ha cancellato i requisiti di controllo e le restrizioni a p
Sì, non c'è problema quando c'è una soluzione. Devi solo usare quello che hai e usarlo correttamente).
Roman. e ivandurak grazie mille per le vostre risposte, ma questo è ancora difficile da capire per me. Ho trovato un suggerimento su un altro forum su come fare questo, ma finora non posso applicarlo al mio solito codice
int BuyTrue, SellTrue;// definire le variabili che serviranno come queste bandiere
....
//--- Condizioni per l'acquisto
if (BuyTrue==0 && ... più le vostre altre condizioni) //condizione di posizione aperta
{
....
OrderSend(....); //funzione per aprire un ordine
BuyTrue=1; // Se BuyTrue=1, la condizione per l'apertura della posizione non sarà completamente soddisfatta
// di conseguenza, ad un segnale di acquisto ripetuto non verrà aperta una negoziazione
SellTrue=0; // A SellTrue=0 la condizione di apertura della posizione sarà completamente soddisfatta
// quindi il prossimo trade sarà solo Sell
....
}
//--- Condizione per la vendita
if (SellTrue==0 && ... più le vostre altre condizioni) //condizione di posizione aperta
{
....
OrderSend(....); //funzione per aprire un ordine
SellTrue=1; // Se SellTrue=1, la condizione di apertura dell'ordine non sarà completamente soddisfatta
// quindi, ad un secondo segnale Sell non verrà aperta una posizione
BuyTrue=0; // A BuyTrue=0 la condizione di apertura della posizione sarà completamente soddisfatta
// di conseguenza, il prossimo trade sarà solo Buy
....
}
Il mio codice per aprire una posizione
total=OrdersTotal();
se(totale<1)
{
// nessun ordine aperto identificato
se(AccountFreeMargin()<(1000*Lots))
{
Print("Non abbiamo soldi. Free Margin = ", AccountFreeMargin();
ritorno(0);
}
// controlla la posizione lunga (BUY)
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green);
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine BUY aperto: ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
ritorno(0);
}
// controllare la posizione corta (SELL)
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Stampa("Ordine SELL aperto: ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
ritorno(0);
}
ritorno(0);
}
Roman. e ivandurak grazie mille per le vostre risposte, ma questo è ancora difficile da capire per me. Ho trovato un suggerimento su un altro forum su come fare questo, ma finora non posso applicarlo al mio solito codice
int BuyTrue, SellTrue;// definire le variabili che serviranno come bandiere descritte sopra
....
//--- Condizioni per l'acquisto
if (BuyTrue==0 && ... più le vostre altre condizioni) //condizione di posizione aperta
{
....
OrderSend(....); //funzione per aprire un ordine
BuyTrue=1; // Se BuyTrue=1, la condizione per l'apertura della posizione non sarà completamente soddisfatta
// di conseguenza, ad un segnale di acquisto ripetuto non verrà aperta una negoziazione
SellTrue=0; // A SellTrue=0 la condizione di apertura della posizione sarà completamente soddisfatta
// quindi il prossimo trade sarà solo Sell
....
}
//--- Condizione per la vendita
if (SellTrue==0 && ... più le vostre altre condizioni) //condizione di posizione aperta
{
....
OrderSend(....); //funzione per aprire un ordine
SellTrue=1; // Se SellTrue=1, la condizione di apertura dell'ordine non sarà completamente soddisfatta
// quindi, ad un secondo segnale Sell non verrà aperta una posizione
BuyTrue=0; // A BuyTrue=0 la condizione di apertura della posizione sarà completamente soddisfatta
// di conseguenza, il prossimo trade sarà solo Buy
....
}
Il mio codice per aprire un affare.
total=OrdersTotal();
se(totale<1)
{
// nessun ordine aperto identificato
se(AccountFreeMargin()<(1000*Lots))
{
Print("Non abbiamo soldi. Free Margin = ", AccountFreeMargin();
ritorno(0);
}
// controlla la posizione lunga (BUY)
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green);
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine BUY aperto: ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
ritorno(0);
}
// controllare la posizione corta (SELL)
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Stampa("Ordine SELL aperto: ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
ritorno(0);
}
ritorno(0);
}
Prima di tutto, incolla il tuo codice nell'editor tramite Ctrl+Alt+M (o premi SRC in cima al menu), altrimenti è male, cosa è chiaro - tutto si fonde sotto uno...:-))
In secondo luogo, leggete il tutorial, in particolare le informazioni sul link che ho consigliato, sotto il codice c'è la sua descrizione e proprio alla fine della descrizione è descritto con precisione - come segnalare una volta un prezzo sopra/sotto la MA (avrete un'analogia con una singola entrata ad una data condizione di trading - l'uso di bandiere e tutto), prima di LAVORARE il vostro Wizard ... :-)))
P.S. o ricerca su google: Come inserire correttamente il codice sito:mql4.com