Chiedete! - pagina 76

 

Domanda EA

Ciao Codersguru,

Sto cercando di imparare la programmazione e sto usando il tuo materiale, lasciami dire che è eccellente! passo dopo passo e semplice da seguire, grazie per questo.

Ho una domanda, visto che usi l'ema cross over come esempio per l'EA, stavo pensando di usare l'indicatore stepMA_7.2 invece dell'ema. Pensi che l'indicatore stepMA_7.2 funzionerà? o il codice dovrà essere riorganizzato o forse sarà necessario altro codice aggiuntivo?

Stavo pensando che solo uno scambio di indicatori nel codice dovrebbe funzionare.

Grazie in anticipo

Grazie.

 
Michel:
Questo è sbagliato: le barre precedenti sono positive contate
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

Grazie.

 
 

Ho ancora qualche problema. Gli ordini di acquisto vengono aperti correttamente, ma tutti vengono chiusi allo stoploss, ignorando le condizioni di uscita.

//+------------------------------------------------------------------+

//| EA Stripped Down.mq4 |

//+------------------------------------------------------------------+

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

//+------------------------------------------------------------------+

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------+

int start()

{

//+------------------------------------------------------------------+

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

//+------------------------------------------------------------------+

}
 
 

Mediamobile di un altro indicatore

Capito.

 

controllare le posizioni aperte all'interno di un intervallo

Sto cercando di controllare le posizioni aperte entro x pip, se nessuna posizione è aperta ne aprirà una. Non funziona e apre continuamente posizioni, qualcuno può aiutarmi?

if(buyingPosition)

{

weBeBuying = true;

totalorders = OrdersTotal();

for(i=0;i<totalorders;i++)

{

OrderSelect(i,SELECT_BY_POS);

if((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber))

{

tipo = OrderType();

if((type == OP_BUY) || (type == OP_BUYLIMIT))

{

if(((Bid+spread) - OrderOpenPrice()) > -0,0013)

weBeBuying = false;

}

}

}

}

if(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,lots,Bid+spread,slippage,0,0,NULL,magicNumber,0,Green);

 

MA di un indicatore iCustom

Come faccio a codificare la dichiarazione in un ea per fare riferimento ad una media mobile di 7, Smooth, di un indicatore iCustom? Il che equivale a utilizzare una media mobile utilizzando i dati del primo indicatore. È possibile fare questo nella visualizzazione di un indicatore iCustom e avere una MA dell'indicatore (utilizzando i dati dei primi indicatori), ma come si fa a codificare in un ea??

Per favore aiutatemi su questa affermazione!

Vi ringrazio in anticipo per il vostro aiuto!

Dave

Qualcuno può aiutarmi con questo???? Per favore!!!!

Penso di aver capito!

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); //LOWER GAMMA

Ho ancora bisogno di aiuto su questo - Potete aiutarmi!

 

Sere puoi postare le tue domande relative a MQL4, e farò del mio meglio per rispondere

per il codice di errore.

Ho appena restituito conto a me che su tutti i miei esperti, ho un codice di errore "OrderModify errore 1", anche con un esperto come quello di Coders Guru, sotto,

perché?

Grazie!

//+------------------------------------------------------------------+

//| PriceCross.mq4 |

//| Coders Guru ||

//| https://www.mql5.com/en/forum ||

//+------------------------------------------------------------------+

#proprietà copyright "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- Include

#include

//---- Limiti delle transazioni

extern double TakeProfit = 200;

extern double TrailingStop = 50

extern double StopLoss = 50;

extern double Lots = 0.1;

extern int Slippage = 5;

//--- Opzioni esterne

extern int CurrentBar = 1;

extern int HedgeLevel = 6;

extern double Expiration = 7200;

extern int Size = 4;

extern int Step = 1;

extern bool UseClose = true;

//--- Impostazioni degli indicatori

extern int MaMode = 3;

extern int MaPeriod = 24;

//--- Variabili globali

int MagicNumber = 101090;

string ExpertComment = "PriceCross

bool LimitPairs = true;

bool LimitFrame = true;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // aggiungi/rimuovi le coppie che vuoi limitare.

bool Optimize = true;

int NumberOfTries = 5;

//+------------------------------------------------------------------

int init()

{

return(0);

}

int deinit()

{

return(0);

}

//+------------------------------------------------------------------

bool isNewSymbol(string current_symbol)

{

//ciclo attraverso tutti gli ordini aperti e confronto dei simboli

int totale = OrdiniTotali();

for(int cnt = 0 ; cnt < totale ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

stringa selected_symbol = OrderSymbol();

if (current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

return (Falso);

}

return (True);

}

//+------------------------------------------------------------------+

int start()

{

int cnt, ticket, totale,n;

doppio trend ;

if(Bars<100) {Print("barre meno di 100"); return(0);}

if(LimitFrame)

{

if(Periodo()!=TimeFrame) {Print("Questo EA non funziona con questo TimeFrame!"); return(0);}

}

if(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("Questo EA non funziona con questa valuta!"); return(0);}

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar);

//--- Condizioni di trading

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false ;

se (Apertura[1]tendenza)

BuyCondition = true;

se (Apertura[1]>tendenza && Chiusura[1]<tendenza)

SellCondition = true;

se (Open[1]>trend && Close[1]<trend)

CloseBuyCondition = true;

se (Apertura[1]trend)

CloseSellCondition = true;

totale = OrdiniTotali();

if(totale < 1 || isNewSymbol(Symbol())

{

if(BuyCondition) //<-- condizione BUY

{

ticket = OpenOrder(OP_BUY); //<-- Aprire ordine BUY

CheckError(ticket, "BUY");

for(n=0 ; n< Dimensione ; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lotti,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

if(SellCondition) //<-- condizione SELL

{

ticket = OpenOrder(OP_SELL); //<-- Aprire ordine SELL

CheckError(ticket, "SELL");

for(n=0 ; n < Dimensione ; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lotti,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration);

}

return(0);

}

return(0);

}

for(cnt=0;cnt<totale;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) //<-- La posizione lunga è aperta

{

if(UseClose)

{

if(CloseBuyCondition) //<-- Chiudi l'ordine e esci!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Tracciamento dell'ordine

}

if(OrderType()==OP_SELL) //<-- Passa alla posizione short

{

if(UseClose)

{

if(CloseSellCondition) //<-- Chiudi l'ordine e esci!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<-- Tracciamento dell'ordine

}

}

}

return(0);

}

//+------------------------------------------------------------------+

....

 

Ciao,

C'è un modo per sapere che un ordine è già chiuso?

L'illustrazione è come questa:

Apro 2 ordini pendenti.

aperto #182 acquisto limite 0.17 EURUSD a 1.3005 sl: 1.2970 tp: 1.3013

aprire #183 comprare limite 0,17 EURUSD a 1,3000 sl: 1,2968 tp: 1,3011

poi

ordine #182, compra 0.17 EURUSD è aperto a 1.3005

take profit #182 a 1.3013 (1.3013 / 1.3015)

voglio cancellare l'ordine #183 dopo che l'ordine #182 è chiuso. Il trigger è se l'ordine #182 chiuso allora l'ordine #183 sarà cancellato.

Saluti