VECCHIO EA CLOUSE7575

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
Rispondi
clouse7575
Messaggi: 273
Iscritto il: 17/05/2014, 10:53

VECCHIO EA CLOUSE7575

Messaggio da clouse7575 »

SALVE a tutti , in particolare a CARLO10 creatore di questa mia idea di trading trasformata in un ottimo EA.
Purtroppo c'e' un piccolo problema. APPENA entrato trade non viene rispettato le modalita' di inserimento del stop loss. Praticamente viene inserito lo stop a BE +5 pips non dopo 30 pips ma da subito dopo pochi pips. POI stranezza viene inserito il take profit pari al prezzo di ingresso. RIPORTO QUI IL CODICE E spero che qualcuno esperto MAGARI TE CARLO10 possiate provarlo e capire il problema. FINO ad ora ho dovuto intervenire manualmente . codice:




+------------------------------------------------------------------+
//| clouse7575_EA_v2.mq4 |
//| carlo10, Italy |
//| http://metatrader-forex-trading.blogspot.com |
//+------------------------------------------------------------------+
#property copyright "carlo10, Italy"
#property link "http://metatrader-forex-trading.blogspot.com"

/* MEDIA MOBILE ESPONENZIALE 100 , MEDIA MOBILE ESPONENZIALE 200, PIVOT INTRADAY , PREZZO D'APERTURA GIORNALIERO .

BUY : QUANDO PRIMA CANDELA CHIUDE SOPRA MEDIA 100 E CI TROVIAMO SOPRA PREZZO D'APERTURA E SE PERO' LA MEDIA 200
E PIVOT HANNO UNA DISTANZA SUPERIORE A 50PIPS , SE INVECE LA MEDIA 200 O IL PIVOT HANNO UNA DISTANZA
RISPETTO ALLA MEDIA 100 INFERIORE DEI 50 PIPS ATTENDERE CHIUSURA CANDELA SOPRA MEDIA 200 O PIVOT.

SELL: DISCORSO INVERSO , CANDELA CHIUDE SOTTO MEDIA 100 E CI TROVIAMO SOTTO PREZZO D'APERTURA E SE PERO'
LA MEDIA 200 ED IL PIVOT HANNO DISTANZA SUPERIORE AI 50 PIPS, SE INVECE LA MEDIA 200 O IL PIVOT HANNO UNA
DISTANZA RISPETTO ALLA MEDIA 100 INFERIORE DEI 50 PIPS , ATTENDERE CHIUSURA CANDELA SOTTO MEDIA 200 O PIVOT.

STOP LOSS: QUANDO IL PREZZO SI TROVA DALLA PARTE OPPOSTA DEL PREZZO D'APERTURA RISPETTO AL NOSTRO INGRESSO DI
ALMENO 40 PIPS .
aggiunta:
inserire anche indicatore CCI(COMMODITY CHANNEL INDEX) SETTATO 125.
BUY: OLTRE ALLA CONDIZIONI SOPRA ESPOSTE , IL CCI DOVRA' ESSERE SOPRA LO 0 AL MOMENTO DEL SEGNALE, IN CASO
CONTRARIO SEGNALE BUY ANNULLATO.(FLAT)

SHORT: OLTRE ALLA CONDIZIONE SOPRA ESPOSTA, IL CCI DOVRA' ESSERE SOTTO LO 0 AL MOMENTO DEL SEGNALE, IN CASO
CONTRARIO SEGNALE SHORT ANNULLATO (FLAT)

TIME FRAME 15 MINUTI, LOSS BE DOPO I PRIMI 30 PIPS DI GAIN , E SPOSTARE LOSS SEMPRE DI 30 PIPS OGNI 60 PIPS
DAL PREZZO RAGGIUNTO DOPO I PRIMI 30 PIPS DI GAIN

ESEMPIO:
PIVOT 5 Novembre 1,4198 R1 1,4297 S1 1,4116
ORE 8:14 LONG A 1,4213 LOSS 1,4168
TAKE PROFIT 1,4253 , SUCESSIVAMENTE 1,4290
*/

//Settaggi Ordini
extern string ORDINI = "***************************************************";
extern double e_TakeProfit = 1000;
extern double e_Stoploss = 40;
extern double e_Lots = 0.01;
extern double e_BreakEvenStop = 30;
extern double e_TrailingStop = 60;
extern double e_TrailingStep = 30;
extern int e_MagicID = 23456;

//settaggi media mobile
extern string MEDIA_MOBILE = "***************************************************";
extern int e_ma_100 = 100;
extern int e_ma_200 = 200;
extern int e_ma_method = MODE_EMA;
extern int e_ma_applied_price = PRICE_CLOSE;
extern int e_ma_shift = 0;

//settaggi CCI
extern string CCI = "***************************************************";
extern int e_CCI_period = 125;
extern int e_CCI_applied_price = PRICE_TYPICAL;
extern int e_CCI_shift = 0;

//settaggi Distanza
extern string DISTANZA = "***************************************************";
extern int e_distanza = 50;


//Impostazioni Debug
extern string DEBUG = "***************************************************";
extern bool e_debug = false;

int PrevDay;
double Range,HiPrice,LoPrice;

double R3;
double R2;
double R1;
double Pivot;
double S1;
double S2;
double S3;

double g_Point = 0.0001;

int init(){
double Poin;
if (Point == 0.00001) Poin = 0.0001;
else
if (Point == 0.001) Poin = 0.01;
else Poin = Point;

g_Point = Poin;

return(0);
}

int deinit(){
return(0);
}

int start(){


//Inizializzazione indicatori
double v_MA_100 = iMA(NULL, 0, e_ma_100, 0, e_ma_method, e_ma_applied_price, e_ma_shift);
double v_MA_100_shift1 = iMA(NULL, 0, e_ma_100, 0, e_ma_method, e_ma_applied_price, e_ma_shift+1);
double v_MA_200 = iMA(NULL, 0, e_ma_200, 0, e_ma_method, e_ma_applied_price, e_ma_shift);
double v_MA_200_shift1 = iMA(NULL, 0, e_ma_200, 0, e_ma_method, e_ma_applied_price, e_ma_shift+1);
double v_CCI = iCCI(NULL, 0, e_CCI_period, e_CCI_applied_price, e_CCI_shift);
double v_distanza = MathAbs(v_MA_100 - v_MA_200);
double v_pivot = iCustom(NULL, 0, "Pivots", 0, 0);


//Disegno Pivot
if(ObjectFind("Pivot")==0) ObjectDelete("Pivot");
ObjectCreate("Pivot", OBJ_HLINE, 0, 0, Pivot);

//Valore media 100
if (ObjectFind("v_MA_100") != -1) ObjectDelete("v_MA_100");
ObjectCreate("v_MA_100", OBJ_LABEL, 0, 0, 0);
ObjectSet("v_MA_100", OBJPROP_XDISTANCE, 5);
ObjectSet("v_MA_100", OBJPROP_YDISTANCE, 20);
ObjectSetText("v_MA_100", StringConcatenate("MA_100: ", v_MA_100) , 10, "Verdana", White);

//Valore media 200
if (ObjectFind("v_MA_200") != -1) ObjectDelete("v_MA_200");
ObjectCreate("v_MA_200", OBJ_LABEL, 0, 0, 0);
ObjectSet("v_MA_200", OBJPROP_XDISTANCE, 5);
ObjectSet("v_MA_200", OBJPROP_YDISTANCE, 35);
ObjectSetText("v_MA_200", StringConcatenate("MA_200: ", v_MA_200) , 10, "Verdana", White);

//Distanza tra le medie
if (ObjectFind("v_distanza") != -1) ObjectDelete("v_distanza");
ObjectCreate("v_distanza", OBJ_LABEL, 0, 0, 0);
ObjectSet("v_distanza", OBJPROP_XDISTANCE, 5);
ObjectSet("v_distanza", OBJPROP_YDISTANCE, 50);
ObjectSetText("v_distanza", StringConcatenate("Distanza: ", v_distanza) , 10, "Verdana", White);

//Pivot
if (ObjectFind("PivotValue") != -1) ObjectDelete("PivotValue");
ObjectCreate("PivotValue", OBJ_LABEL, 0, 0, 0);
ObjectSet("PivotValue", OBJPROP_XDISTANCE, 5);
ObjectSet("PivotValue", OBJPROP_YDISTANCE, 65);
ObjectSetText("PivotValue", StringConcatenate("Pivot: ", v_pivot) , 10, "Verdana", White);

//CCI
if (ObjectFind("v_CCI") != -1) ObjectDelete("v_CCI");
ObjectCreate("v_CCI", OBJ_LABEL, 0, 0, 0);
ObjectSet("v_CCI", OBJPROP_XDISTANCE, 5);
ObjectSet("v_CCI", OBJPROP_YDISTANCE, 80);
ObjectSetText("v_CCI", StringConcatenate("CCI: ", v_CCI) , 10, "Verdana", White);

//Gestioni ordini aperti
int v_total=OrdersTotal();
if(v_total<1) {
// no opened orders identified
if(AccountFreeMargin()<(1000*e_Lots)){
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
}
else{
int v_i = 0;
while (v_i < v_total){
//posizioni aperte? (ricerca per MagicID)
if((OrderSelect(v_i, SELECT_BY_POS, MODE_TRADES)==true) && (OrderMagicNumber() == e_MagicID)){
if (e_TrailingStop > 0){
//gestione trailing stop
TrailingStop();
return(0);
}
}
v_i++;
}
}

if (e_debug)
Print("Close[1]: ", Close[1], " v_pivot: ", v_pivot, " Ask: ", Ask, " v_CCI: ", v_CCI, " v_distanza: ", v_distanza, " e_distanza: ", e_distanza, " v_MA_100: ", v_MA_100, " v_MA_100_shift1: ", v_MA_100_shift1, " v_MA_200: ", v_MA_200, " v_MA_200_shift1: ", v_MA_200_shift1);


//Apertura ordini
int v_ticket;
if (Close[1] < v_pivot && Ask < v_pivot && v_CCI < 0 &&
//distanza maggiore di 50 pips il prezzo è inferiore ad una delle 2 medie
(v_distanza > (e_distanza * g_Point) && ((Ask < v_MA_100 && Close[1] > v_MA_100_shift1) || (Ask < v_MA_200) && (Close[1] > v_MA_200_shift1)))
//oppure
||
//distanza minore di 50 pips il prezzo è inferiore a tutte e 2 le medie
(v_distanza < (e_distanza * g_Point) && (Ask < v_MA_100 && Ask < v_MA_200) && (Close[1] > v_MA_100_shift1 || Close[1] > v_MA_200_shift1))
){
RefreshRates();
v_ticket=OrderSend(Symbol(), OP_SELL, e_Lots, Bid, 3, Bid + (e_Stoploss*g_Point), Bid - (e_TakeProfit*g_Point), "clouse7575 EA", e_MagicID, 0, Red);
if(v_ticket>0){
if(OrderSelect(v_ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}

if (Close[1] > v_pivot && Bid > v_pivot && v_CCI > 0 &&
//distanza maggiore di 50 pips il prezzo supera una delle 2 medie
(v_distanza > (e_distanza * g_Point) && ((Bid > v_MA_100 && Close[1] < v_MA_100_shift1) || (Bid > v_MA_200) && (Close[1] < v_MA_200_shift1)))
//oppure
||
//distanza minore di 50 pips il prezzo supera tutte e 2 le medie
(v_distanza < (e_distanza * g_Point) && (Bid > v_MA_100 && Bid > v_MA_200) && (Close[1] < v_MA_100_shift1 || Close[1] < v_MA_200_shift1))
){
RefreshRates();
v_ticket=OrderSend(Symbol(), OP_BUY, e_Lots, Ask, 3, Ask - (e_Stoploss*g_Point), Ask + (e_TakeProfit*g_Point), "clouse7575 EA", e_MagicID, 0, Green);
if(v_ticket>0){
if(OrderSelect(v_ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}


return(0);
}

void TrailingStop(){
RefreshRates();

if (OrderType() == OP_BUY)
if ((Bid - OrderOpenPrice()) > (e_TrailingStop * g_Point)){
if (OrderStopLoss() < OrderOpenPrice() && (Bid - OrderOpenPrice()) >= (e_BreakEvenStop * g_Point)){
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Green);
return;
}
if (OrderStopLoss() < Bid - (e_TrailingStop + e_TrailingStep - 1) * g_Point) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask - e_TrailingStop * g_Point, OrderTakeProfit(), 0, Green);
return;
}
}
if (OrderType()==OP_SELL)
if ((OrderOpenPrice() - Ask) > (e_TrailingStop * g_Point)){
if (OrderStopLoss() > OrderOpenPrice() && (OrderOpenPrice() - Ask) >= (e_BreakEvenStop * g_Point)){
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0, Green);
return;
}
if (OrderStopLoss() > Ask + (e_TrailingStop + e_TrailingStep - 1) * g_Point || OrderStopLoss()==0) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + e_TrailingStop * g_Point, OrderTakeProfit(), 0, Red);
return;
}
}
}




NB: QUESTO EA si e' largamente parlato nel vecchio forum qualche anno fa . Poi la discussione e' stata interrotta e non so se CARLO10 ABBIA POI FINITO DEL TUTTO QUESTO EA. SE hai tempo CARLO10 dacci un occhiata. GRAZIE
Avatar utente
carlo10
Messaggi: 4261
Iscritto il: 08/05/2014, 21:17

Re: VECCHIO EA CLOUSE7575

Messaggio da carlo10 »

Ciao clouse7575, ricordo l'EA ma non ho tempo di guardarci, se qualcun altro vuole continuare al posto mio ben venga!
clouse7575
Messaggi: 273
Iscritto il: 17/05/2014, 10:53

Re: VECCHIO EA CLOUSE7575

Messaggio da clouse7575 »

Ciao. Dispiace molto. Ci speravo. Qualcuno può aiutarmi
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti