여보세요,
이 (놀라운) 포럼의 도구나 전략 중 일부를 살펴보고 연구한 후 지표 CCI가 종종 신뢰할 수 있는 필터처럼 사용된다는 것을 알게 되었습니다.
참조 표시: +100/-100 및 0은 중요합니다. 그러나 너무 멀리 가기 전에 참조 표시 0부터 시작하겠습니다.
이 레퍼런스 마크 0이 깨지는 즉시 가격은 의무적으로 같은 방향으로 이동합니다.
그러면 간단한 값의 EA(mt3 또는 mt4용) avec를 만들 수 있습니까?
지시자:
CCI (10 또는 14 ) (기간 변경 가능)
FT: M30 또는 H1
SL: 20(외부)
TP: 200(외부)
TP: 6(외부)
규정 : 오픈 : 레퍼런스 마크 0을 넘어 교차
닫기: SL, TP, TS 또는 레퍼런스 마크 0에서 수행된 새로운 교차로.
간단하게 시작하고 첫 번째 결과에 따라 필터를 넣습니다.
이 방법은 위험을 감수하면서 최대 핍을 가져가는 것이 아니라 매번 신뢰할 수 있고 유리한 소규모 거래를 보장하기를 원합니다.
이 요청에 관심을 가져주신 모든 분들께 감사드립니다.브루노,
CCI가 0을 넘어서 올라가면 매수 신호임을 의미합니다. 권리?
CCI가 하락세를 보이고 0을 넘으면 매도입니다.
좋아요?
그렇다면 할 수 있을 것 같습니다.
안녕하세요 뉴디지털입니다.
You mean that if CCI is going up crossing the 0 so it is signal to buy. Right?
CCI가 하락세를 보이고 0을 넘으면 매도입니다.
좋아요?
그렇다면 할 수 있을 것 같습니다.네 그렇군요, 확인의 이미지를 원하십니까?
귀하의 작업과 관심에 감사드립니다. 이 전략에 대해 어떻게 생각하십니까?
또한 CCI(14) 차트에 MA(25)를 표시하고 동일한 신호를 더 일찍 취하거나 CCI가 0 레벨을 교차하고 방향을 확인할 때까지 기다릴 수 있습니다.
IMHO 일일 차트를 사용하는 것이 좋습니다. 1H만큼 시끄럽지 않습니다.
이 EA를 만들었습니다.
포스트에 첨부하려고 합니다.
하지만 필터나 다른 지표가 있어야 한다고 생각합니다.
그리고 t/s = 6은 좋은 생각이 아닙니다.
어쨌든 나는 그것을 했다.
규칙에 따라 정확해야 합니다.
원하는 경우 다른 지표를 추가할 수 있습니다.
또한 CCI(14) 차트에 MA(25)를 표시하고 동일한 신호를 더 일찍 취하거나 CCI가 0 레벨을 교차하고 방향을 확인할 때까지 기다릴 수 있습니다. IMHO 일일 차트를 사용하는 것이 좋습니다. 1H만큼 시끄럽지 않습니다.
안녕하세요 크롤입니다.
관심과 아이디어 감사합니다.
나는 이 가능성이 있다고 생각했지만 더 높게 썼으므로 첫 번째 결과를 검증하기 위해 필터 없이 간단한 ea로 시작합니다.
브루노FX,
지금은 첨부할 수 없어 코드를 올립니다.
버그가 없기를 바랍니다.
//| 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); }그리고 주문 마감에 관한 몇 가지 개선 사항.
이제 주문 마감을 위한 CCI 기간을 선택할 수 있습니다.
//+--------------------------------------------------------------------------+
//| 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); }안녕하세요 뉴디지털입니다.
환호. 어떤 효과와 어떤 속도.
나는 당신이 알람과 필터 시간 서버를 넣은 스크립트를 봅니다.
실제로 필요한 모든 것입니다.
내일 아침부터 테스트 해보겠습니다.
너는 최고야
나는 그 거래가 CCI가 0 레벨을 넘을 때 한 번만 열릴 것이라고 생각합니다. 차트를 살펴보십시오. 우리는 왜 그렇게 많은 거래를 가지고 있습니까?
여보세요,
이 (놀라운) 포럼의 도구나 전략 중 일부를 살펴보고 연구한 후 지표 CCI가 종종 신뢰할 수 있는 필터처럼 사용된다는 것을 알게 되었습니다.
참조 표시: +100/-100 및 0은 중요합니다. 그러나 너무 멀리 가기 전에 참조 표시 0부터 시작하겠습니다.
이 레퍼런스 마크 0이 깨지는 즉시 가격은 의무적으로 같은 방향으로 이동합니다.
그러면 간단한 값의 EA(mt3 또는 mt4용) avec를 만들 수 있습니까?
지시자:
CCI (10 또는 14) ( 기간 변경 가능)
FT: M30 또는 H1
SL: 20(외부)
TP: 200(외부)
TP: 6(외부)
규정 : 오픈 : 레퍼런스 마크 0을 넘어 교차
닫기: SL, TP, TS 또는 레퍼런스 마크 0에서 수행된 새로운 교차로.
간단하게 시작하고 첫 번째 결과에 따라 필터를 넣습니다.
이 방법은 위험을 감수하면서 최대 핍을 가져가는 것이 아니라 매번 신뢰할 수 있고 유리한 소규모 거래를 보장하기를 원합니다.
이 요청에 관심을 가져주셔서 감사합니다