Cci_ea

 

Hallo,

Nachdem ich mir einige der Tools bzw. Strategien in diesem (wunderbaren) Forum ausgiebig angeschaut und studiert habe, ist mir aufgefallen, dass der Indikator CCI oft als zuverlässiger Filter verwendet wird.

Referenzmarken: +100/-100 und 0 sind signifikant. Aber bevor wir zu weit gehen, lassen Sie uns mit der Referenzmarke 0 beginnen.

Sobald diese Referenzmarke 0 durchbrochen wird, geht der Kurs zwangsläufig in dieselbe Richtung.

Wäre es dann möglich, einen EA (für mt3 oder mt4)avec der einfachen Werte zu machen?

Indikator:

CCI (10 oder 14 ) (Möglichkeit, den Zeitraum zu ändern)

FT: M30 oder H1

SL: 20 (extern)

TP: 200 (extern)

TP: 6 (extern)

Regeln : Open : Überschreitung der Referenzmarke 0

Close : mit SL, oder TP, oder TS oder neuer Überschreitung der Referenzmarke 0.

Beginnen wir einfach und setzen wir nach den ersten Ergebnissen Filter ein.

Diese Methode will nicht das Maximum von Pips mit Risiko nehmen, aber sich von kleinen Trades zuverlässig und vorteilhaft jedes Mal versichern.

Ich danke Ihnen für Ihr Interesse an dieser Anfrage

 
BrunoFX:
Hallo,

Nach längerem Betrachten und Studieren einiger Tools oder Strategien in diesem (wunderbaren) Forum ist mir aufgefallen, dass der Indikator CCI oft als zuverlässiger Filter verwendet wird.

Referenzmarken: +100/-100 und 0 sind signifikant. Aber bevor wir zu weit gehen, lassen Sie uns mit der Referenzmarke 0 beginnen.

Sobald diese Referenzmarke 0 durchbrochen wird, geht der Kurs zwangsläufig in dieselbe Richtung.

Wäre es dann möglich, einen EA (für mt3 oder mt4)avec der einfachen Werte zu machen?

Indikator:

CCI (10 oder 14 ) (Möglichkeit, den Zeitraum zu ändern)

FT: M30 oder H1

SL: 20 (extern)

TP: 200 (extern)

TP: 6 (extern)

Regeln : Open : Überschreitung der Referenzmarke 0

Close : mit SL, oder TP, oder TS oder neuer Überschreitung der Referenzmarke 0.

Beginnen wir einfach und setzen wir nach den ersten Ergebnissen Filter ein.

Diese Methode will nicht das Maximum von Pips mit Risiko nehmen, aber sich von kleinen Trades zuverlässig und vorteilhaft jedes Mal versichern.

Wir danken Ihnen für Ihr Interesse an dieser Anfrage

Bruno,

Sie meinen, wenn der CCI nach oben geht und die 0 überschreitet, ist das ein Kaufsignal. Richtig?

Wenn der CCI einen Abwärtstrend zeigt und die Null durchquert, ist das ein Verkaufssignal.

Ist das richtig?

Wenn ja, so scheint es, ich bin in der Lage, es zu tun.

 

Hallo Newdigital,

You mean that if CCI is going up crossing the 0 so it is signal to buy. Right?

Wenn der CCI einen Abwärtstrend zeigt und den Nullpunkt kreuzt, heißt es verkaufen.

Ist das richtig?

Wenn ja, so scheint es, dass ich in der Lage bin, es zu tun.

Ja, das ist gut, wollen Sie ein Bild der Bestätigung?

Ich danke Ihnen für Ihre Arbeit und Ihr Interesse. Was hältst du von dieser Strategie?

 

Wir können auch den MA (25) auf dem CCI (14)-Diagramm abbilden und das gleiche Signal nehmen, aber früher, oder einfach warten, bis der CCI die 0-Marke überschreitet und die Richtung bestätigt.

IMHO ist es besser, Tages-Chart zu verwenden, es ist nicht so laut wie 1H.

 

Ich habe diesen EA erstellt.

Ich versuche, es an den Beitrag anzuhängen.

Aber ich denke, es sollte einige Filter oder einige andere Indikator(en) sein.

Und t/s = 6 ist keine gute Idee, ich denke.

Wie auch immer, ich habe es getan.

Es sollte genau nach Ihren Regeln sein.

Und wir können jeden anderen Indikator hinzufügen, wenn wir wollen.

 
krall:
Wir können auch MA (25) auf CCI (14) Chart, und nehmen Sie das gleiche Signal, aber früher, oder einfach warten, bis CCI wird 0 Ebene und bestätigt Richtung. IMHO ist es besser, täglich Chart verwenden, es ist nicht so laut wie 1H.

Hallo Krall,

Danke für dein Interesse und deine Idee.

Ich hatte gedacht, hat diese Möglichkeit, aber wie ich es höher schreiben, beginnen mit einem einfachen ea, ohne Filter, um die ersten Ergebnisse zu validieren.

 

BrunoFX,

Ich kann es jetzt nicht anhängen, also poste ich den Code.

Ich hoffe, dass es keine Bugs gibt.

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

//| CCI_ea.mq4 |

//| code by Newdigital |

//| https://www.forex-tsd.com |

//| using Gordago software |

//| http://www.gordago.com |

//| |

//| 21.02.2006 CCI_ea by idea of BrunoFX |

//| (see the thread |

//| https://www.forex-tsd.com/suggestions-trading-systems/1089-cci_ea.html |

//| |

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

#property copyright "BrunoFX and newdigital"

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

extern int MAGIC = 976714;

extern string PARAMETERS_TRADE = "PARAMETERS TRADE";

extern double Lots = 0.10;

extern int Slippage = 4;

extern double lStopLoss = 20;

extern double sStopLoss = 20;

extern double lTakeProfit = 200;

extern double sTakeProfit = 200;

extern double lTrailingStop = 6;

extern double sTrailingStop = 6;

extern string PARAMETERS_EXPERT = "PARAMETERS EXPERT";

extern color clOpenBuy = Blue;

extern color clCloseBuy = Aqua;

extern color clOpenSell = Red;

extern color clCloseSell = Violet;

extern color clModiBuy = Blue;

extern color clModiSell = Red;

extern string Name_Expert = "CCI_ea";

extern string PARAMETERS_ALARM = "PARAMETERS ALARM";

extern bool UseSound = True;

extern string NameFileSound = "alert.wav";

extern string PARAMETERS_HOURS = "TRADING HOURS";

extern bool UseHourTrade = True;

extern int FromHourTrade = 8;

extern int ToHourTrade = 18;

extern string PARAMETERS_INDICATOR_ONE = "CCI";

extern int CCIPeriod=14;

void deinit() {

Comment("");

}

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

//| |

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

int start(){

if (UseHourTrade){

if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {

Comment("Time for trade has not come else!");

return(0);

} else Comment("");

}else Comment("");

if(Bars<100){

Print("bars less than 100");

return(0);

}

if(lStopLoss<10){

Print("StopLoss less than 10");

return(0);

}

if(lTakeProfit<10){

Print("TakeProfit less than 10");

return(0);

}

if(sStopLoss<10){

Print("StopLoss less than 10");

return(0);

}

if(sTakeProfit<10){

Print("TakeProfit less than 10");

return(0);

}

double diCCI0=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,1);

double diCCI1=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double diCCI2=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double d3=(0);

double diCCI4=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,1);

double diCCI5=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double diCCI6=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double d7=(0);

double diCCI8=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,1);

double diCCI9=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double diCCI10=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double d11=(0);

double diCCI12=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,1);

double diCCI13=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double diCCI14=iCCI(NULL,0,CCIPeriod,PRICE_TYPICAL,0);

double d15=(0);

if(AccountFreeMargin()<(1000*Lots)){

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (!ExistPositions()){

if ((diCCI0=d3)){

OpenBuy();

return(0);

}

if ((diCCI4>diCCI5 && diCCI6<=d7)){

OpenSell();

return(0);

}

}

if (ExistPositions()){

if(OrderType()==OP_BUY){

if ((diCCI8>diCCI9 && diCCI10<=d11)){

CloseBuy();

return(0);

}

}

if(OrderType()==OP_SELL){

if ((diCCI12=d15)){

CloseSell();

return(0);

}

}

}

TrailingPositionsBuy(lTrailingStop);

TrailingPositionsSell(sTrailingStop);

return (0);

}

bool ExistPositions() {

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {

return(True);

}

}

}

return(false);

}

void TrailingPositionsBuy(int trailingStop) {

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {

if (OrderType()==OP_BUY) {

if (Bid-OrderOpenPrice()>trailingStop*Point) {

if (OrderStopLoss()<Bid-trailingStop*Point)

ModifyStopLoss(Bid-trailingStop*Point);

}

}

}

}

}

}

void TrailingPositionsSell(int trailingStop) {

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {

if (OrderType()==OP_SELL) {

if (OrderOpenPrice()-Ask>trailingStop*Point) {

if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0)

ModifyStopLoss(Ask+trailingStop*Point);

}

}

}

}

}

}

void ModifyStopLoss(double ldStopLoss) {

bool fm;

fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);

if (fm && UseSound) PlaySound(NameFileSound);

}

void CloseBuy() {

bool fc;

fc=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);

if (fc && UseSound) PlaySound(NameFileSound);

}

void CloseSell() {

bool fc;

fc=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);

if (fc && UseSound) PlaySound(NameFileSound);

}

void OpenBuy() {

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = GetStopLossBuy();

ldTake = GetTakeProfitBuy();

lsComm = GetCommentForOrder();

OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenBuy);

if (UseSound) PlaySound(NameFileSound);

}

void OpenSell() {

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = GetStopLossSell();

ldTake = GetTakeProfitSell();

lsComm = GetCommentForOrder();

OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenSell);

if (UseSound) PlaySound(NameFileSound);

}

string GetCommentForOrder() { return(Name_Expert); }

double GetSizeLot() { return(Lots); }

double GetStopLossBuy() { return (Bid-lStopLoss*Point);}

double GetStopLossSell() { return(Ask+sStopLoss*Point); }

double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }

double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }
 

Und einige Verbesserungen in Bezug auf die Schließung der Aufträge.

Wir können jetzt den Zeitraum der CCI für die Schließung der Aufträge wählen.

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

//| CCI_ea.mq4 |

//| code by Newdigital |

//| https://www.forex-tsd.com |

//| using Gordago software |

//| http://www.gordago.com |

//| |

//| 21.02.2006 CCI_ea by idea of BrunoFX |

//| (see the thread |

//| https://www.forex-tsd.com/suggestions-trading-systems/1089-cci_ea.html |

//| |

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

#property copyright "BrunoFX and newdigital"

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

extern int MAGIC = 976714;

extern string PARAMETERS_TRADE = "PARAMETERS TRADE";

extern double Lots = 0.10;

extern int Slippage = 4;

extern double lStopLoss = 20;

extern double sStopLoss = 20;

extern double lTakeProfit = 200;

extern double sTakeProfit = 200;

extern double lTrailingStop = 6;

extern double sTrailingStop = 6;

extern string PARAMETERS_EXPERT = "PARAMETERS EXPERT";

extern color clOpenBuy = Blue;

extern color clCloseBuy = Aqua;

extern color clOpenSell = Red;

extern color clCloseSell = Violet;

extern color clModiBuy = Blue;

extern color clModiSell = Red;

extern string Name_Expert = "CCI_ea";

extern string PARAMETERS_ALARM = "PARAMETERS ALARM";

extern bool UseSound = True;

extern string NameFileSound = "alert.wav";

extern string PARAMETERS_HOURS = "TRADING HOURS";

extern bool UseHourTrade = True;

extern int FromHourTrade = 8;

extern int ToHourTrade = 18;

extern string PARAMETERS_INDICATOR_ONE = "CCI";

extern int CCIPeriod_signal=14;//taking the signal to open buy or sell

extern int CCIPeriod_close_buy=14;

extern int CCIPeriod_close_sell=14;

void deinit() {

Comment("");

}

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

//| |

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

int start(){

if (UseHourTrade){

if (!(Hour()>=FromHourTrade && Hour()<=ToHourTrade)) {

Comment("Time for trade has not come else!");

return(0);

} else Comment("");

}else Comment("");

if(Bars<100){

Print("bars less than 100");

return(0);

}

if(lStopLoss<10){

Print("StopLoss less than 10");

return(0);

}

if(lTakeProfit<10){

Print("TakeProfit less than 10");

return(0);

}

if(sStopLoss<10){

Print("StopLoss less than 10");

return(0);

}

if(sTakeProfit<10){

Print("TakeProfit less than 10");

return(0);

}

double diCCI0=iCCI(NULL,0,CCIPeriod_signal,PRICE_TYPICAL,1);

double diCCI1=iCCI(NULL,0,CCIPeriod_signal,PRICE_TYPICAL,0);

double diCCI2=iCCI(NULL,0,CCIPeriod_signal,PRICE_TYPICAL,0);

double d3=(0);

double diCCI4=iCCI(NULL,0,CCIPeriod_signal,PRICE_TYPICAL,1);

double diCCI5=iCCI(NULL,0,CCIPeriod_signal,PRICE_TYPICAL,0);

double diCCI6=iCCI(NULL,0,CCIPeriod_signal,PRICE_TYPICAL,0);

double d7=(0);

double diCCI8=iCCI(NULL,0,CCIPeriod_close_buy,PRICE_TYPICAL,1);

double diCCI9=iCCI(NULL,0,CCIPeriod_close_buy,PRICE_TYPICAL,0);

double diCCI10=iCCI(NULL,0,CCIPeriod_close_buy,PRICE_TYPICAL,0);

double d11=(0);

double diCCI12=iCCI(NULL,0,CCIPeriod_close_sell,PRICE_TYPICAL,1);

double diCCI13=iCCI(NULL,0,CCIPeriod_close_sell,PRICE_TYPICAL,0);

double diCCI14=iCCI(NULL,0,CCIPeriod_close_sell,PRICE_TYPICAL,0);

double d15=(0);

if(AccountFreeMargin()<(1000*Lots)){

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (!ExistPositions()){

if ((diCCI0=d3)){

OpenBuy();

return(0);

}

if ((diCCI4>diCCI5 && diCCI6<=d7)){

OpenSell();

return(0);

}

}

if (ExistPositions()){

if(OrderType()==OP_BUY){

if ((diCCI8>diCCI9 && diCCI10<=d11)){

CloseBuy();

return(0);

}

}

if(OrderType()==OP_SELL){

if ((diCCI12=d15)){

CloseSell();

return(0);

}

}

}

TrailingPositionsBuy(lTrailingStop);

TrailingPositionsSell(sTrailingStop);

return (0);

}

bool ExistPositions() {

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {

return(True);

}

}

}

return(false);

}

void TrailingPositionsBuy(int trailingStop) {

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {

if (OrderType()==OP_BUY) {

if (Bid-OrderOpenPrice()>trailingStop*Point) {

if (OrderStopLoss()<Bid-trailingStop*Point)

ModifyStopLoss(Bid-trailingStop*Point);

}

}

}

}

}

}

void TrailingPositionsSell(int trailingStop) {

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {

if (OrderType()==OP_SELL) {

if (OrderOpenPrice()-Ask>trailingStop*Point) {

if (OrderStopLoss()>Ask+trailingStop*Point || OrderStopLoss()==0)

ModifyStopLoss(Ask+trailingStop*Point);

}

}

}

}

}

}

void ModifyStopLoss(double ldStopLoss) {

bool fm;

fm = OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);

if (fm && UseSound) PlaySound(NameFileSound);

}

void CloseBuy() {

bool fc;

fc=OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);

if (fc && UseSound) PlaySound(NameFileSound);

}

void CloseSell() {

bool fc;

fc=OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);

if (fc && UseSound) PlaySound(NameFileSound);

}

void OpenBuy() {

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = GetStopLossBuy();

ldTake = GetTakeProfitBuy();

lsComm = GetCommentForOrder();

OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenBuy);

if (UseSound) PlaySound(NameFileSound);

}

void OpenSell() {

double ldLot, ldStop, ldTake;

string lsComm;

ldLot = GetSizeLot();

ldStop = GetStopLossSell();

ldTake = GetTakeProfitSell();

lsComm = GetCommentForOrder();

OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenSell);

if (UseSound) PlaySound(NameFileSound);

}

string GetCommentForOrder() { return(Name_Expert); }

double GetSizeLot() { return(Lots); }

double GetStopLossBuy() { return (Bid-lStopLoss*Point);}

double GetStopLossSell() { return(Ask+sStopLoss*Point); }

double GetTakeProfitBuy() { return(Ask+lTakeProfit*Point); }

double GetTakeProfitSell() { return(Bid-sTakeProfit*Point); }
 

Hallo Newdigital,

Prost. Welche Wirksamkeit und welche Geschwindigkeit.

Ich sehe in Skript, dass Sie Alarme und einen Filter Zeit serveur setzen.

In der Tat alles, was es notwendig ist.

Ich werde es ab morgen früh testen.

Sie sind der Beste

 

Ich kann kein Bild anhängen, aber EA scheint nicht richtig zu funktionieren, öffnet Aufträge auf fast jeder Kerze...

 

Ich dachte, dass der Handel nur einmal eröffnet wird, wenn der CCI die 0-Marke überschreitet. Werfen Sie einen Blick auf das Diagramm. Warum haben wir so viele Trades?