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
[lang=pl]Un'altra domanda: il tuo orario è GMT o no? Se non è GMT farò un piccolo cambiamento in questo EA.
L'ho appena fatto, per favore controllatelo, se tutto è a posto.
Distance beetwen low e high stopLoss e TP li ho fatti come variabili esterne.
Grazie Grzesiek[/lang].Caro Grzesiek
Ho incollato questo indicatore nella cartella esperti e oggi ho monitorato per imparare come funziona. Il problema che ha è che una volta che fa il primo trade e chiude l'ordine o sullo stop o sul t/p allora immediatamente l'EA ricomincia il trade sul prezzo in cui ha chiuso l'ordine recente. Come posso fermarlo nel codice? grazie
Qualcuno può aiutarmi?
Ciao Forum
questo codice ha un problema, quando esegue il commercio è OK ma quando chiude l'ordine di nuovo EA apre un nuovo commercio al prezzo e al tempo in cui l'ordine precedente è stato chiuso. Non ho visto alcun errore nel codice. Chi ha scritto questo è molto occupato e non è online. Qualcuno può suggerire qual è il problema?
extern double stopLoss = 35.0;
extern double takeProfit = 50.0;
extern string Begin="00:00";
extern string End="08:00";
extern double distance = 5;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
extern double lots = 1;
int magic = 123;
int slippage = 1;
string comment = "test
int ticket;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
if(isGoodTime(Begin,End))
{
if(!cond)
{
low = Bid;
high = Ask;
}
cond = true;
if(Bid < low) low = Bid;
se(Ask > high) high = Ask;
}
se((alto - basso)*1000>distanza)
{
cond2 = true;
}
if(!isGoodTime(Begin,End))
{
cond = false;
}
if(!isGoodTime(Inizio,Fine) && cond2)
{
if(countOrders(magic,OP_SELL) == 0 )
{
if(Bid<=(low-0.0010))
{
if(isECN == false)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit),comment,magic);
}
se(èECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point,takeProfit),0);
}
}
}
if(countOrders(magic,OP_BUY) == 0)
{
if((Ask-high)>=0.0010)
{
se(isECN==false)
{
OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),comment,magic);
}
se(èECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point,takeProfit),0);
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool isGoodTime(string Begin, string End) {
if(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) {
return(true);
}
return(false);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
count++;
}
}
}
}
}
return(count);
}
double sltpValue(double w1, int w2)
{
if(w2 == 0)
return (0);
return (NormalizeDouble(w1, Digits));
}
Ciao Avasys,
Per quanto posso dire che non c'è niente di sbagliato nel codice, in base alla tua descrizione fa esattamente quello che è programmato per fare (comprare quando l'Ask è più alto del massimo e vendere quando il bid è più basso del minimo) fondamentalmente continua a comprare e vendere come il massimo e il minimo sono rotti, rispettivamente.
Grazie,
Grazie per il tuo commento
C'è un modo per dire al codice di fare trading solo una volta al giorno e solo al primo break out.
L'autore di questo codice è un uomo molto occupato e non potrebbe contribuire molto tempo come sembra
l'aiuto è apprezzato[lang=pl]//+------------------------------------------------------------------+
//| semplice EA.mq4 |
//| Copyright © 2011, luktom.biz ||
//| www.luktom.biz/en |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, luktom.biz."
#property link "http://www.luktom.biz"
extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin="2:00";
extern string End="10:00";
extern double distance = 60;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
doppio alto;
extern double lots = 0.1;
int magic = 1232344524285020;
int slippage = 1;
string comment = "";
int ticket;
int short = 0;
int long = 0;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
Stampa(countOrders(magic,OP_BUY));
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
Stampa(ValutaConto());
//----
if(isGoodTime(Inizio,Fine))
{
short = 0;
long = 0;
if(!cond)
{
low = Bid;
high = Ask;
}
cond = true;
if(Bid < low) low = Bid;
se(Ask > high) high = Ask;
}
se((alto - basso)*1000>distanza)
{
cond2 = true;
}
if(!isGoodTime(Begin,End))
{
cond = false;
}
if(!isGoodTime(Inizio,Fine) && cond2)
{
if(countOrders(magic,OP_SELL) == 0 )
{
if(Bid<=(low-0.0005) && short == 0)
{
short++;
if(isECN == false)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit),comment,magic);
}
se(èECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point,takeProfit),0);
}
}
}
if(countOrders(magic,OP_BUY) == 0)
{
if((Ask-high)>=0.005 && long ==0)
{
long++;
if(isECN==false)
{
OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),comment,magic);
}
se(èECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point,takeProfit),0);
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool isGoodTime(string Begin, string End) {
if(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) {
return(true);
}
return(false);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
count++;
}
}
}
}
}
return(count);
}
double sltpValue(double w1, int w2)
{
if(w2 == 0)
return (0);
return (NormalizeDouble(w1, Digits));
}
Ora EA apre solo una posizione al giorno. Per quanto riguarda la tua domanda sulle email, da qualche parte nel forum esiste il mio post in questo tema:)
Fammi sapere se lo trovi.
Grazie,
Grzesiek[/lang]
Ciao Avasys,
Per quanto posso dire non c'è nulla di sbagliato nel codice, in base alla tua descrizione fa esattamente ciò che è programmato per fare (comprare quando l'Ask è più alto del massimo e vendere quando il bid è più basso del minimo) fondamentalmente continua a comprare e vendere come il massimo e il minimo sono rotti, rispettivamente.
Grazie,Grazie per il tuo commento
C'è un modo per dire al codice di fare trading solo una volta al giorno e solo al primo break out.
L'autore di questo codice è un uomo molto occupato che non può contribuire molto tempo come sembra
e quello che ho notato è che il sistema esegue i trade nonostante il range tra i tempi indicati nel codice sia più di 60 pips il sistema fa ancora trading, fa trading solo se il range tra i tempi specifici (indicati nel codice, vedi tempi di inizio e fine) è meno di 60 pips allora trade.
aiuto è apprezzato
[lang=pl]//+------------------------------------------------------------------+
//| semplice EA.mq4 |
//| Copyright © 2011, luktom.biz ||
//| www.luktom.biz/en |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, luktom.biz."
#property link "http://www.luktom.biz"
extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin="2:00";
extern string End="10:00";
extern double distance = 60;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
doppio alto;
extern double lots = 0.1;
int magic = 1232344524285020;
int slippage = 1;
string comment = "";
int ticket;
int short = 0;
int long = 0;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
Stampa(countOrders(magic,OP_BUY));
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
Print(AccountCurrency());
//----
if(isGoodTime(Inizio,Fine))
{
short = 0;
long = 0;
if(!cond)
{
low = Bid;
high = Ask;
}
cond = true;
if(Bid < low) low = Bid;
se(Ask > high) high = Ask;
}
se((alto - basso)*1000>distanza)
{
cond2 = true;
}
if(!isGoodTime(Begin,End))
{
cond = false;
}
if(!isGoodTime(Inizio,Fine) && cond2)
{
if(countOrders(magic,OP_SELL) == 0 )
{
if(Bid<=(low-0.0005) && short == 0)
{
short++;
if(isECN == false)
{
OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit),comment,magic);
}
se(èECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lots,Bid, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point,takeProfit),0);
}
}
}
if(countOrders(magic,OP_BUY) == 0)
{
if((Ask-high)>=0.005 && long ==0)
{
long++;
se(isECN==false)
{
OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point,takeProfit),comment,magic);
}
se(èECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET);
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point,takeProfit),0);
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool isGoodTime(string Begin, string End) {
if(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) {
return(true);
}
return(false);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
count++;
}
}
}
}
}
return(count);
}
double sltpValue(double w1, int w2)
{
if(w2 == 0)
return (0);
return (NormalizeDouble(w1, Digits));
}
Ora EA apre solo una posizione al giorno. Per quanto riguarda la tua domanda sulle email, da qualche parte nel forum esiste il mio post in questo tema:)
Fammi sapere se lo trovi.
Grazie,
Grzesiek[/lang]grazie amico,
Ho copiato l'intero codice qui e incollato nel file mq4, ma quando l'ho copiato nella cartella expert non ha funzionato, non ha creato il file ex4 e non è presente nel manu experts advisors. Quindi, per favore, puoi caricare come file mq4 o c'è qualcosa nel codice, perché ho provato diverse volte
Rilevare le posizioni x,y del clic del mouse sul grafico
È possibile rilevare la posizione di un clic del mouse in MT4? Non sto parlando di WindowOnDrop. Se conosco le coordinate x,y dello schermo, posso convertirle nel prezzo/tempo corrispondente?
Grazie per il vostro aiuto.
Cordiali saluti,
Tiffany
Caro amico
Oggi, lunedì, il codice (quello vecchio che funzionava giovedì e venerdì) non ha funzionato affatto
Ho inserito manualmente le transazioni,
Sistema semplice: Necessita di pochissime raccomandazioni EA
Ecco la logica
Commerciare quando la gamma tra GMT 02:00 e 10:00 è inferiore a 60 pips poi aprire vendere SE il prezzo rompe minimo - 5pips linea o comprare se il prezzo rompe massimo + 5 pips linea. ED ESEGUIRE SOLO UN COMMERCIO AL GIORNO, NON IMPORTA COMMERCIO È ANNULLATO CHIUSO ALLO STOP O PRESO PROFITTO SOLO UN ORDINE AL GIORNO.
Ecco il codice, ma non funziona, in EA MANU di MT4 ha l'icona inattiva e non c'è nessun file ex4 nella cartella esperti, non riesco a capire cosa c'è di sbagliato
extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin = "2: 00";
extern string End = "10: 00";
extern double distance = 60;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
doppio alto;
extern double lots = 0.1;
int magic = 1232344524285020;
int slippage = 1;
string comment = "";
int ticket;
int short = 0;
long int = 0;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
(0) ritorno;
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit ()
{
//----
Stampa (countOrders (magic, OP_BUY));
//----
(0) return;
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()
{
Stampa (ContoValuta ());
//----
if (isGoodTime (Inizio, Fine))
{
short = 0;
long = 0;
se (! cond)
{
low = Bid;
high = Ask;
}
cond = true;
se (Bid < low) low = Bid;
se (Ask > high) high = Ask;
}
se ((alto-basso) * 1000 > distanza)
{
cond2 = true;
}
if (! isGoodTime (Begin, End))
{
cond = false;
}
if (! isGoodTime (Inizio, Fine) & & cond2)
{
se (countOrders (magic, OP_SELL) == 0)
{
se (Bid ≪ = (CRL-0.0005) & & short == 0)
{
short + +;
se (isECN == false)
{
OrderSend (Symbol (), OP_SELL, lots, Bid, slippage, sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Ask-takeProfit * Point, takeProfit), comment, magic);
}
se (isECN)
{
ticket = OrderSend (Symbol (), OP_SELL, lots, Bid, slippage, 0,0, comment, magic);
OrderSelect (ticket, SELECT_BY_TICKET);
OrderModify (ticket, OrderOpenPrice (), sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Bid-takeProfit * Point, takeProfit), 0);
}
}
}
if (countOrders (magic, OP_BUY) == 0)
{
if ((Ask-high) > = 0.005 & & long = = 0)
{
long + +;
se (isECN == false)
{
OrderSend (Symbol (), OP_BUY, lots, Ask, slippage, sltpValue (Ask-stopLoss * Point, stopLoss), sltpValue (Bid + takeProfit * Point, takeProfit), comment, magic);
}
se (isECN)
{
ticket = OrderSend (Symbol (), OP_BUY, lots, Ask, slippage, 0,0, comment, magic);
OrderSelect (ticket, SELECT_BY_TICKET);
OrderModify (ticket, OrderOpenPrice (), sltpValue (Bid-stopLoss * Point, stopLoss), sltpValue (Ask + takeProfit * Point, takeProfit), 0);
}
}
}
}
//----
(0) ritorno;
}
//+------------------------------------------------------------------+
bool isGoodTime (string, string, Begin, End) {
if (TimeCurrent () > Localtime (Begin) & & TimeCurrent < Localtime () (End)) {
return (true);
}
return (false);
}
int countOrders (int, int oMagic oType) {
int count = 0;
for (int i = 0; i < OrdersTotal (); i ++) {
if (OrderSelect (i, SELECT_BY_POS)) {
if (OrderMagicNumber () == oMagic) {
se (OrderSymbol () = i = Symbol ()) {
se (OrderType () == oType || oType < 0) {
conteggio ++;
}
}
}
}
}
return (count);
}
double sltpValue (double, int w1 w2)
{
se (w2 = = 0)
ritorno (0);
return (NormalizeDouble (w1, Digits));
}
EAs di Forex.com
Sono un idiota. Ho postato questo nel forum sbagliato... e non so come spostarlo nel forum di programmazione. Mi scuso per l'inconveniente; l'errore non era intenzionale.
Faccio trading spot forex da 3 anni e ho sviluppato 2 EAs. Questi EAs funzionano bene su Glocap, FXCM e Alpari (sono residente negli Stati Uniti, quindi la mia scelta di broker è un po' limitata). Inoltre, voglio un conto MT4 con la commissione incorporata nello spread (preferenza personale).
Ho recentemente testato questi EAs su un conto demo di Forex.com (Gain Capital). Entrambi gli EAs hanno funzionato bene e hanno negoziato secondo le regole programmate. Tuttavia, quando ho aperto un conto live con Forex.com, l'EA #1 non funziona più correttamente, ma l'EA #2 funziona bene. L'EA #1 funziona bene nel tester di strategia di Forex.com, ma so che questo non conta molto. Tutta questa cosa è molto strana per me, perché entrambi gli EA usano lo stesso codice per aprire le operazioni (l'errore sull'EA #1 arriva quando si cerca di aprire le operazioni), impostare il dimensionamento dei lotti, monitorare le operazioni e chiudere le operazioni. Ecco un po' di informazioni su entrambi gli EA:
EA #1 EUR/JPY Usa l'indicatore Ichimoku
EA #2 EUR/USD Usa 3 medie mobili e MACD
Come ho detto prima, EA #2 negozia bene; lavora secondo le regole programmate. Quando l'EA #1 prova ad aprire delle operazioni, ricevo il seguente messaggio di errore: 2011.11.21 17:00:02 Ichimoku_1700Eastern EURJPYpro,H1: Ichimoku_Open EA per EURJPYpro: Errore nell'apertura dell'ordine BUY: (133) trade is disabled /// for 103.7210
Inoltre, quando l'EA #2 cerca di piazzare una compravendita, il log degli esperti mostra sempre che la std.lib viene caricata immediatamente prima delle compravendite che danno un errore (questo non succede con l'EA #1):2011.11.21 17:00:02 stdlib EURJPYpro,H1: loaded successfully
Ecco il pezzo finale di questo puzzle: l'EA #2 aprirà le compravendite ma non a 1700 Eastern. Tutti gli errori lanciati si sono verificati su operazioni che cercavano di aprirsi a 1700 Eastern (questa potrebbe essere una coincidenza).
Ho smontato l'EA, ho riscritto il codice da zero, ho copiato il codice dall'EA #1 nell'EA #2 e niente sembra risolvere il problema. Forex.com non vuole aiutarmi perché lo considerano "supporto EA" che non offrono. In quello che posso trovare su Internet su questo errore, significa che a) il broker non permette il trading EA (che so non essere vero) o b) il trade sta inviando stop e/o limiti che non funzionano con un broker a esecuzione istantanea (il trade NON sta inviando stop o limiti). Forex.com ha detto che NON sospendono il trading in nessun momento della giornata di trading.
Le mie domande per questo gruppo sono le seguenti:
1. Qualcuno ha mai incontrato questo problema?
2. Se sì, cosa avete fatto per risolverlo?
3. Se non avete mai visto questo problema, cosa pensate possa essere la causa?
Sono sicuro che si tratta di qualcosa di semplice che non sto vedendo. Qualsiasi commento, racconto di esperienza e pensiero dal campo sinistro sarebbe molto apprezzato.