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 completato il mio EA con il tuo aiuto.
Ciao, mLaden,
Grazie ancora per il tuo grande aiuto
Ho completato il mio EA con il tuo aiuto.
Grazie
Riverniciare gli indicatori
Ho postato questa domanda in questo thread 'Coding Help' un paio di settimane fa, ma non ho avuto risposta.
La maggior parte degli indicatori MTF si ridipingono, alcuni più di altri. Ne ho uno che ridipinge leggermente, ma ha un fattore che è molto buono e potrebbe essere incluso in un metodo. Il problema è che ho bisogno di aggiornare/aggiornare manualmente costantemente perché abbia senso. C'è un modo per codificare un aggiornamento automatico ogni tick o ogni 'x' secondi/ticks?
Attualmente, per aggiornare, o cambio i tempi del grafico e poi torno indietro, o vado nella scheda Charts/Refresh, o aggiungo un altro indicatore al grafico e cancello quello precedente.......di nuovo! Molto dispendioso in termini di tempo!
Se c'è un modo per fare questo aggiornamento automatico, condividerò quello che ho trovato............
Grazie,
el bee
...
el ape
Metatrader invia un segnale di autorefresh ad ogni indicatore nella finestra quando arriva un nuovo tick, quindi non è un problema di refresh. Di solito quel tipo di problema che hai si verifica quando un indicatore non trova il conteggio delle barre cambiate (di solito chiamato negli indicatori come "limite") correttamente ... quindi è un problema dell'indicatore. Quando cambiate time frame ricalcola di nuovo tutte le barre ed è per questo che lo mostra correttamente in quel caso e non lo fa correttamente quando è cambiato solo il valore di 1 barra
Per concludere: controllate il codice dell'indicatore - c'è un bug in esso
Ho postato questa domanda in questo thread 'Coding Help' un paio di settimane fa, ma non ho avuto risposta.
La maggior parte degli indicatori MTF si ridipingono, alcuni più di altri. Io ne ho uno che ridipinge leggermente, ma ha un fattore che è molto buono e potrebbe essere incluso in un metodo. Il problema è che ho bisogno di aggiornare/aggiornare manualmente costantemente perché abbia senso. C'è un modo per codificare un aggiornamento automatico ogni tick o ogni 'x' secondi/ticks?
Attualmente, per aggiornare, o cambio i tempi del grafico e poi torno indietro, o vado nella scheda Charts/Refresh, o aggiungo un altro indicatore al grafico e cancello quello precedente.......di nuovo! Molto dispendioso in termini di tempo!
Se c'è un modo per fare questo aggiornamento automatico, condividerò quello che ho trovato............
Grazie,
el beeaiuto indicatore
Potrei usare un indicatore che metta una linea verticale sulla candela più recente, regolabile, se qualcuno ne ha uno e può condividerlo o se uno può essere fatto, sarebbe molto apprezzato
C'è un codice sbagliato?
Sto cercando di scrivere un EA che si basa su apertura e chiusura della barra
ma ho un problema sulla condizione per aprire un trade.
Il mio metodo è qualcosa del genere:
+ VENDERE quando l'apertura della barra corrente è superiore alla chiusura della barra precedente. Il TP è la chiusura della barra precedente
+ COMPRA quando l'apertura della barra attuale è inferiore all'apertura della barra precedente. TP è l'apertura della barra precedente
+ CLOSE quando la chiusura della barra corrente è inferiore alla chiusura della barra precedente.
ed ecco il codice (sto ancora cercando di imparare mql4, quindi so che non è il miglior codice)
#property link "sando"
#define MAGICMA 20050610
//====================parameter===================//
extern double solantang =3;
extern double solangiam =3;;
extern double LotsSize =1;
//==============================================//
//+------------------------------------------------------------------+
//| controllare se ci sono scambi aperti
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdiniTotali();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- restituisce il volume degli ordini
if(buys>0) return(buys);
altrimenti return(-vendite);
}
//+------------------------------------------------------------------+
//| Moneymanagement (Tipo 3) |
//+------------------------------------------------------------------+
doppio moneymanagement3()
{
double LotsSize = 0.1;
se(OrdiniStoriaTotale()>0)
{
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
if(OrderProfit() > 0)
{
se(OrderLots() > LotsSize)
{
LotsSize = OrderLots()/solangiam;
}
else
{
LotsSize = LotsSize;
}
}
else
{
LotsSize = OrderLots() * solantang;
}
}
return (NormalizeDouble(LotsSize,2));
}
//+------------------------------------------------------------------+
//| CONDIZIONE per aprire una negoziazione
//+------------------------------------------------------------------+
void opentrade()
{
int res;
if(Close[0]<Open[1])
{
res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red);
ritorno;
}
se(Open[0]>Open[1])
{
res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],"",MAGICMA,0,Blu);
ritorno;
}
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
void start()
{
//---- controlla la cronologia e il trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calcola gli ordini aperti in base al simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) opentrade();
// else donggiaodich();
//----
}
//+------------------------------------------------------------------+
e si prega di controllare l'immagine in allegato
Penso che ci sia qualcosa di sbagliato nel codice
a volte l'EA non esegue il trade quando soddisfa la condizione T_T non so perché
e a volte l'EA esegue il trade quando non soddisfa la condizione!
Per favore aiutatemi a risolvere il problema nel codice.
Sto cercando di scrivere un EA che si basi su apertura e chiusura della barra
ma ho un problema sulla condizione per aprire un trade.
Il mio metodo è qualcosa del genere:
+ VENDERE quando l'apertura della barra corrente è superiore alla chiusura della barra precedente. Il TP è la chiusura della barra precedente
+ COMPRA quando l'apertura della barra attuale è inferiore all'apertura della barra precedente. TP è l'apertura della barra precedente
+ CLOSE quando la chiusura della barra attuale.
ed ecco il codice (sto ancora cercando di imparare mql4, quindi so che non è il miglior codice)
e si prega di controllare l'immagine in allegato
Penso che ci sia qualcosa di sbagliato nel codice
a volte l'EA non esegue il trade quando soddisfa la condizione T_T non so perché
e a volte l'EA esegue il trade quando non soddisfa la condizione!
Per favore aiutatemi a correggere l'errore nel codice.[lang=pl]+ SELL quando l'apertura della barra corrente è superiore alla chiusura della barra precedente. Il TP è la chiusura della barra precedente
+ COMPRA quando l'apertura della barra attuale è inferiore all'apertura della barra precedente. TP è l'apertura della barra precedente
Ecco il primo errore:
if(Close[0]Close[1])
if(Open[0]>Open[1]) (Dovrebbe essere Open[0]<Open[1])
Il secondo è StopLoss. Nel vostro codice avete impostato StopLose, ma nella descrizione sopra
hai detto che vuoi chiudere i trade se una nuova barra si alza.
Ecco un altro problema. Supponiamo che Open[0]<Open[1]. La differenza può essere così piccola
che quando il tuo ordine verrà eseguito il prezzo sarà superiore a Open[1] e il TP sarà
meno del prezzo di apertura dell 'ordine. Sotto ho aggiunto una condizione che permette di catturare questo caso.
Se ho capito bene che vuoi chiudere tutti gli ordini alla fine della barra, ecco il codice.
#proprietà link "sando"
#define MAGICMA 20050610
//====================parameter===================//
extern double solantang =3;
extern double solangiam =3;;
extern double LotsSize =1;
//==============================================//
//+------------------------------------------------------------------+
//| controllare se ci sono scambi aperti
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdiniTotali();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- restituisce il volume degli ordini
if(buys>0) return(buys);
altrimenti return(-vendite);
}
//+------------------------------------------------------------------+
//| Moneymanagement (Tipo 3) |
//+------------------------------------------------------------------+
doppio moneymanagement3()
{
double LotsSize = 0.1;
se(OrdiniStoriaTotale()>0)
{
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
if(OrderProfit() > 0)
{
se(OrderLots() > LotsSize)
{
LotsSize = OrderLots()/solangiam;
}
else
{
LotsSize = LotsSize;
}
}
else
{
LotsSize = OrderLots() * solantang;
}
}
return (NormalizeDouble(LotsSize,2));
}
//+------------------------------------------------------------------+
//| CONDIZIONE per aprire una negoziazione
//+------------------------------------------------------------------+
void opentrade()
{
int res;
if(Close[1] Close[1] )
{
res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1],"",MAGICMA,0,Red);
return;
}
if(Open[0]<Open[1] && Ask < Open[1])
{
res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blu);
ritorno;
}
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
void start()
{
if(isNewBar())
{
closeOrders(MAGICMA,OP_BUY);
closeOrders(MAGICMA,OP_SELL);
}
Print(Close[1]-Open[0]);
//---- controllare la storia e il trading
if(Bars<100 || IsTradeAllowed()==false) return;
//---- calcolare gli ordini aperti in base al simbolo corrente
if(CalculateCurrentOrders(Symbol())==0) opentrade();
// else donggiaodich();
//----
}
void closeOrders(int oMagic,int oType) {
for(int i=0;i<OrdiniTotali();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
if(OrderMagicNumber()==oMagic || oMagic<0) {
if(OrderSymbol()==Symbol()) {
if(OrderType()==oType || oType<0) {
if(OrderType()==OP_BUY) {
OrderClose(OrderTicket(),OrderLots(),Bid,0);
i--;
}
se (OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket());
i--;
}
se (OrderType()==OP_SELL) {
OrderClose(OrderTicket(),OrderLots(),Ask,0);
i--;
}
se (OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket());
i--;
}
}
}
}
}
}
}
bool isNewBar() {
static int prevTime;
bool newBar=false;
if(Time[0]!=prevTime) {
newBar=true;
prevTime=Time[0];
}
return(newBar);
}
//+------------------------------------------------------------------+
Salute,
Grzesiek[/lang]
Aiuto per la codifica: Piazzare Stop Loss & Take Profit con EA usando un broker ECN
Stop Loss, Take Profit con broker ECN
Amici,
Sono un principiante della programmazione MQL4 e ho bisogno di aiuto per collegare uno SL e un TP ad un ORDERSEND con un broker ECN.
Inizialmente non riuscivo a capire perché gli SL & TP facessero risultare il mio ordine in un errore, finché qualcuno non mi ha fatto notare che bisogna impostare il campo StopLoss & TakeProfit all'interno dell'ORDERSEND a "0", altrimenti un broker ECN/STP non eseguirà l'ordine.
Quindi, la mia domanda è: come posso eseguire un ordine a mercato e poi immediatamente (o entro uno o due secondi) allegare uno SL/TP a quel ticket?
Ecco un pezzo di codice pertinente alla mia domanda:
if(CurrentPriceBuy>UpperPriceTrigger)
{
OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,0,CLR_NONE);
}
Qualcuno può aiutarmi a inserire del codice subito dopo il comando OrderSend in modo che io possa attaccare un TP/SL di diciamo arbitrariamente 25pips a quello specifico ticket?
Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo.
Cordiali saluti,
Kasio
Stop Loss, Take Profit con broker ECN
Amici,
Sono un principiante della programmazione MQL4 e ho bisogno di aiuto per collegare un SL & TP a un ORDERSEND con un broker ECN.
Inizialmente, non riuscivo a capire perché gli SL & TP facessero risultare il mio ordine in un errore fino a quando qualcuno mi ha fatto notare che bisogna impostare il campo StopLoss & TakeProfit all'interno dell'ORDERSEND a "0", altrimenti un broker ECN/STP non eseguirà l'ordine.
Quindi, la mia domanda è: come posso eseguire un ordine a mercato e poi immediatamente (o entro uno o due secondi) allegare uno SL/TP a quel ticket?
Ecco un pezzo di codice pertinente alla mia domanda:
if(CurrentPriceBuy>UpperPriceTrigger)
{
OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,0,CLR_NONE);
}
Qualcuno può aiutarmi a inserire del codice subito dopo il comando OrderSend in modo che io possa attaccare un TP/SL di diciamo arbitrariamente 25pips a quello specifico ticket?
Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo.
Cordiali saluti,
KasioCiao Kasio,
Se fai trading in un broker ECN dovresti inviare l'ordine senza SL/TP e modificarlo.
Ecco un esempio:
extern double StopLoss = 25;
extern double TakeProfit = 25;
if(isECN==true )
{
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);
}
double sltpValue(double w1, int w2)
{
se(w2 == 0)
ritorna (0);
return (NormalizeDouble(w1, Digits));
}
Spero che sia chiaro
PM me se hanno più domande.
grazie,
grzesiek
Informazioni non aggiornate ogni tic
Ciao Ragazzi,
Ho scritto questo ea che mi mostra informazioni su vari indicatori sul mio schermo.
Tuttavia quando collego l'ea al mio grafico, le informazioni vengono aggiornate solo ogni 5 min (su grafico 5 min.),
invece di ogni tic. C'è qualcosa di sbagliato nel mio codice? Vorrei che le informazioni cambiassero ogni tic.
//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2011, Test Inc. |
//| test.net - Risorse e informazioni di test. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Test Inc."
#property link "http://www.test.net"
//+------------------------------------------------------------------+
//| etichette |
//+------------------------------------------------------------------+
#define ccilabel "CCIValue"
#define rsilabel "RSIValue"
#define stochlabel "StochValue"
#define upperbandlabel "UpperBandValue"
#define lowerbandlabel "LowerBandValue"
//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
//===================================================================
// Indice di forza relativa dinamico berekenen
//===================================================================
doppio RSI;
doppio UpperBand
doppio Banda Inferiore;
RSI=iCustom(NULL,0, "Dynamic Zone RSI",14,0,1);
UpperBand=iCustom(NULL,0, "Dynamic Zone RSI",14,1,1);
LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1);
//===================================================================
// CCI berekenen
//===================================================================
doppio CCI;
CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1);
//===================================================================
// Stocastico
//===================================================================
doppio Stoch;
Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
//===================================================================
// Visualizza informazioni
//===================================================================
// CCIValue
ObjectDelete(ccilabel);
ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);
ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);
ObjectSetText(ccilabel, "CCIValue è " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue);
// StochValue
ObjectDelete(stochlabel);
ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);
ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue);
// RSIValue
ObjectDelete(rsilabel);
ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);
ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);
ObjectSetText(rsilabel, "RSIValue è " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue);
// UpperBandValue
ObjectDelete(upperbandlabel);
ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80);
ObjectSetText(upperbandlabel, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue);
// LowerBandValue
ObjectDelete(lowerbandlabel);
ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);
ObjectSetText(lowerbandlabel, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue);
//----
return(0);
}
//+------------------------------------------------------------------+
KG Supporto e resistenza mod
Salve, ho bisogno di qualcuno che modifichi uno degli indicatori di supporto e resistenza allegati,
Ho bisogno di qualcuno che modifichi uno degli indicatori di supporto e resistenza allegati. Il primo ha un allarme quando viene effettuato un breakout. Questo indicatore è uno dei migliori indicatori di supporto/resistenza ed è anche molto potente soprattutto sui timeframe più alti.
Grazie
kg_supporto_e_resistenza.mq4 o
kg_supporto_e_resistenza_allarme_revisione_2.ex4