코딩 도움말 - 페이지 19

 

ur Help ThanX로 EA를 다시 완료했습니다.

안녕하세요, mladen님,

큰 도움을 주셔서 다시 ThanX

ur Help ThanX로 EA를 다시 완료했습니다.

XXXXXXXXXX보다

 

다시 칠하기 표시기

몇 주 전에 이 스레드 '코딩 도움말'에 이 질문을 게시했지만 응답이 없습니다.

대부분의 MTF 지표는 다른 지표보다 더 많이 칠해집니다. 나는 약간 다시 칠하는 것이 있지만 매우 좋고 방법에 포함될 수있는 한 가지 요소가 있습니다. 문제는 의미가 있으려면 수동으로 지속적으로 업데이트/새로 고침해야 한다는 것입니다. 매 틱 또는 매 'x'초/틱마다 자동 새로 고침을 코딩하는 방법이 있습니까?

현재 새로 고침을 하려면 차트 시간을 변경한 다음 뒤로 돌아가거나 차트/새로 고침 탭으로 이동하거나 차트에 다른 지표를 추가하고 이전 지표를 삭제합니다.....반복해서! 시간이 많이 걸립니다!

이 자동 새로 고침을 수행하는 방법이 있으면 내가 찾은 것을 공유하겠습니다.............

고마워,

엘 비

 

...

엘 비

Metatrader는 새로운 틱이 들어올 때 창의 모든 지표에 자동 새로 고침 신호를 보내므로 새로 고침 문제가 아닙니다. 일반적으로 이러한 종류의 문제는 표시기가 변경된 막대 (일반적으로 표시기에서 "한계"로 명명됨)의 수를 제대로 찾지 못할 때 발생하므로 표시기의 문제입니다. 시간 프레임을 변경하면 모든 막대를 다시 다시 계산하므로 이 경우에는 제대로 표시되고 막대 값이 1개만 변경되면 제대로 수행되지 않습니다.

결론: 표시기의 코드를 확인하십시오. 버그가 있습니다.

el bee:
몇 주 전에 이 스레드 '코딩 도움말'에 이 질문을 게시했지만 응답이 없습니다.

대부분의 MTF 지표는 다른 지표보다 더 많이 칠해집니다. 나는 약간 다시 칠하는 것이 있지만 매우 좋고 방법에 포함될 수있는 한 가지 요소가 있습니다. 문제는 의미가 있으려면 수동으로 지속적으로 업데이트/새로 고침해야 한다는 것입니다. 매 틱 또는 매 'x'초/틱마다 자동 새로 고침을 코딩하는 방법이 있습니까?

현재 새로 고침하려면 차트 시간을 변경한 다음 뒤로 돌아가거나 차트/새로 고침 탭으로 이동하거나 차트에 다른 지표를 추가하고 이전 지표를 삭제합니다........반복해서! 시간이 많이 걸립니다!

이 자동 새로 고침을 수행하는 방법이 있으면 내가 찾은 것을 공유하겠습니다.............

고마워,

엘 비
 

표시기 도움말

나는 지표를 사용하여 가장 최근의 양초에 수직선 을 놓을 수 있습니다. 조정 가능한 사람이 있고 공유할 수 있거나 만들 수 있다면 가장 감사할 것입니다.

 

잘못된 코드가 있습니까?

바의 개폐를 기반으로 하는 EA를 작성하려고 합니다.

하지만 거래를 열 수 있는 조건에 문제가 있습니다.

내 방법은 다음과 같습니다.

+ 현재 봉의 시가가 이전 봉의 종가보다 높을 때 매도. TP는 이전 막대에 가깝습니다.

+ 현재 막대의 시가가 이전 막대의 시가보다 낮을 때 매수합니다. TP는 이전 막대를 엽니다.

+ 현재 막대가 닫힐 때 CLOSE.

그리고 여기 코드가 있습니다 (나는 여전히 mql4를 배우려고 노력하고 있으므로 이것이 최고의 코드가 아니라는 것을 압니다)

#property link "sando"

#define MAGICMA 20050610

//==========================================//

extern 이중 솔란탕 = 3;

extern 이중 솔란지암 =3;

외부 이중 LotSize = 1;

//=================================================//

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

//| 오픈 트레이드 확인 |

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

int CalculateCurrentOrders(문자열 기호)

{

구매 = 0, 판매 = 0;

//----

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) 중단;

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

{

if(OrderType()==OP_BUY) 구매++;

if(OrderType()==OP_SELL) 판매++;

}

}

//---- 반품 주문량

if(매수>0) 반환(매수);

그렇지 않으면 반환(-판매);

}

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

//| 자금 관리(유형 3) |

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

이중 자금 관리3()

{

이중 lotSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(OrderProfit() > 0)

{

if(OrderLots() > LotSize)

{

lotSize = OrderLots()/solangiam;

}

또 다른

{

랏 사이즈 = 랏 사이즈;

}

}

또 다른

{

lotSize = OrderLots() * solantang;

}

}

반환 (NormalizeDouble(LotsSize,2));

}

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

//| 거래를 열기 위한 조건 |

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

무효 공개 거래()

{

정수 해상도;

if(닫기[0]<열기[1])

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red);

반품;

}

if(열기[0]>열기[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],"",MAGICMA,0,Blue);

반품;

}

}

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

//| 전문가 시작 기능 |

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

무효 시작()

{

//---- 내역 및 거래 확인

if(Bars<100 || IsTradeAllowed()==false) 반환;

//---- 현재 기호로 미결 주문 계산

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// 그렇지 않으면 donggiaodich();

//----

}

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

그리고 첨부파일의 사진을 확인 해주세요

코드에 문제가 있는 것 같아요

가끔 EA가 조건을 만족하면 거래를 하지 않는 경우가 있습니다 T_T 왜 그런지 모르겠네요

그리고 때때로 EA는 조건을 충족하지 않을 때 거래를 합니다!

코드의 잘못된 부분을 수정하도록 도와주세요.

파일:
1_2.gif  12 kb
new_edge.mq4  4 kb
 
7thman:
바의 개폐를 기반으로 하는 EA를 작성하려고 합니다.

하지만 거래를 열 수 있는 조건에 문제가 있습니다.

내 방법은 다음과 같습니다.

+ 현재 봉의 시가가 이전 봉의 종가보다 높을 때 매도. TP는 이전 막대에 가깝습니다.

+ 현재 막대의 시가가 이전 막대의 시가보다 낮을 때 매수합니다. TP는 이전 막대를 엽니다.

+ 현재 막대가 닫힐 때 CLOSE.

그리고 여기 코드가 있습니다 (나는 여전히 mql4를 배우려고 노력하고 있으므로 이것이 최고의 코드가 아니라는 것을 압니다)

그리고 첨부파일의 사진을 확인해주세요

코드에 문제가 있는 것 같아요

가끔 EA가 조건을 만족하면 거래를 하지 않는 경우가 있습니다 T_T 왜 그런지 모르겠네요

그리고 때때로 EA는 조건을 충족하지 않을 때 거래를 합니다!

코드의 잘못된 부분을 수정하도록 도와주세요.

[lang=pl]+ 현재 막대의 시가가 이전 막대의 종가보다 높을 때 매도 . TP는 이전 막대에 가깝습니다.

+ 현재 막대의 시가가 이전 막대의 시가보다 낮을 때 매수합니다. TP는 이전 막대를 엽니다.

첫 번째 실수는 다음과 같습니다.

if(닫기[0]닫기[1])

if(Open[0]>Open[1]) (Open[0]<Open[1]이어야 함)

두 번째는 스톱로스입니다. 코드에서 StopLose를 설정했지만 위의 설명에서

당신은 새로운 막대가 나타나면 거래를 닫고 싶다고 말했습니다.

여기에 문제가 하나 더 있습니다. Open[0]<Open[1]이라고 가정합니다. 차이가 너무 작을 수 있습니다

주문이 실행될 때 가격이 Open[1]을 초과하고 TP가

주문 시가 보다 낮습니다. 아래에 이 경우를 잡을 수 있는 조건을 추가합니다.

당신이 바의 끝에 있는 모든 주문을 닫고 싶어한다는 것을 잘 이해한다면 여기에 코드가 있습니다.

#속성 링크 "산도"

#define MAGICMA 20050610

//==========================================//

extern 이중 솔란탕 = 3;

extern 이중 솔란지암 =3;

외부 이중 LotSize = 1;

//=================================================//

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

//| 열린 거래 확인 |

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

int CalculateCurrentOrders(문자열 기호)

{

구매 = 0, 판매 = 0;

//----

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) 중단;

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

{

if(OrderType()==OP_BUY) 구매++;

if(OrderType()==OP_SELL) 판매++;

}

}

//---- 반품 주문량

if(매수>0) 반환(매수);

그렇지 않으면 반환(-판매);

}

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

//| 자금 관리(유형 3) |

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

이중 자금 관리3()

{

이중 lotSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(OrderProfit() > 0)

{

if(OrderLots() > LotSize)

{

lotSize = OrderLots()/solangiam;

}

또 다른

{

랏 사이즈 = 랏 사이즈;

}

}

또 다른

{

lotSize = OrderLots() * solantang;

}

}

반환 (NormalizeDouble(LotsSize,2));

}

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

//| 거래를 열기 위한 조건 |

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

무효 공개 거래()

{

정수 해상도;

if(닫기[1] 닫기[1] )

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1],"",MAGICMA,0,Red);

반품;

}

if(열기[0]<열기[1] && 묻기 < 열기[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blue);

반품;

}

}

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

//| 전문가 시작 기능 |

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

무효 시작()

{

if(isNewBar())

{

닫기 주문(MAGICMA,OP_BUY);

닫기 주문(MAGICMA,OP_SELL);

}

인쇄(닫기[1]-열기[0]);

//---- 내역 및 거래 확인

if(Bars<100 || IsTradeAllowed()==false) 반환;

//---- 현재 기호로 미결 주문 계산

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// 그렇지 않으면 donggiaodich();

//----

}

무효 closeOrders(int oMagic,int oType) {

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

if(주문선택(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic || oMagic<0) {

if(OrderSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

if(주문유형()==OP_BUY) {

OrderClose(OrderTicket(),OrderLots(),Bid,0);

나--;

}

if (OrderType() == OP_BUYSTOP)

{

주문삭제(주문티켓());

나--;

}

if(주문유형()==OP_SELL) {

OrderClose(OrderTicket(),OrderLots(),Ask,0);

나--;

}

if (OrderType() == OP_SELLSTOP)

{

주문삭제(주문티켓());

나--;

}

}

}

}

}

}

}

부울 isNewBar() {

정적 정수 prevTime;

부울 newBar=거짓;

if(시간[0]!=prevTime) {

newBar=참;

prevTime=시간[0];

}

리턴(newBar);

}

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

건배,

그르제식[/lang]

 

코딩 도움말: ECN 브로커를 사용하여 EA로 손절매 및 이익 실현

손절매, ECN 브로커와 함께 수익 창출

친구,

저는 MQL4 프로그래밍 의 초보자이며 ECN 브로커가 있는 ORDERSEND에 SL 및 TP를 연결하는 데 도움이 필요합니다.

처음에는 누군가가 ORDERSEND 내의 StopLoss & TakeProfit 필드를 "0"으로 설정해야 한다고 지적할 때까지 SL & TP가 내 주문 결과에 오류가 발생하도록 했는지 이해할 수 없었습니다. 그렇지 않으면 ECN/STP 중개인이 명령을 실행합니다.

그래서 제 질문은 어떻게 하면 마켓에서 주문을 실행한 다음 즉시(또는 1~2초 이내에) 해당 티켓에 SL/TP를 첨부할 수 있습니까?

내 질문과 관련된 코드는 다음과 같습니다.

if(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,CLR_NONE);

}

특정 티켓에 임의로 25pips의 TP/SL을 첨부할 수 있도록 OrderSend 명령 바로 뒤에 코드를 삽입하도록 도와줄 사람이 있습니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

문안 인사,

카시오

 
kasio:
손절매, ECN 브로커와 함께 수익 창출

친구,

저는 MQL4 프로그래밍의 초보자이며 ECN 브로커가 있는 ORDERSEND에 SL 및 TP를 연결하는 데 도움이 필요합니다.

처음에는 누군가가 ORDERSEND 내의 StopLoss & TakeProfit 필드를 "0"으로 설정해야 한다고 지적할 때까지 SL & TP가 내 주문 결과에 오류가 발생하도록 했는지 이해할 수 없었습니다. 그렇지 않으면 ECN/STP 중개인이 명령을 실행합니다.

그래서 제 질문은 어떻게 하면 마켓에서 주문을 실행한 다음 즉시(또는 1~2초 이내에) 해당 티켓에 SL/TP를 첨부할 수 있습니까?

내 질문과 관련된 코드는 다음과 같습니다.

if(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,CLR_NONE);

}

특정 티켓에 임의로 25pips의 TP/SL을 첨부할 수 있도록 OrderSend 명령 바로 뒤에 코드를 삽입하도록 도와줄 사람이 있습니까?

도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

문안 인사,

카시오

안녕하세요 카시오님

ECN 브로커에서 거래하는 경우 SL/TP 없이 주문을 보내고 수정해야 합니다.

다음은 예입니다.

외부 이중 손절매 = 25;

외부 이중 TakeProfit = 25;

if(isECN==true )

{

ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);

주문선택(티켓,SELECT_BY_TICKET);

OrderModify(티켓,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Ask+ TakeProfit*Point,TakeProfit),0);

}

이중 sltpValue(이중 w1, int w2)

{

if(w2 == 0)

리턴(0);

반환 (NormalizeDouble(w1, 숫자));

}

나는 그것이 명확하기를 바랍니다.

더 질문이 있으면 저에게 PM하십시오.

건배,

그르제지크

 

매 틱마다 정보가 업데이트되지 않음

안녕하세요 여러분,

내 화면의 다양한 표시기에 대한 정보를 표시하는 이 ea를 작성했습니다.

그러나 내 차트에 ea를 첨부하면 정보가 5분마다(5분 차트에서) 업데이트됩니다.

모든 틱 대신. 내 코딩에 문제가 있습니까? 모든 틱을 변경하는 정보를 보고 싶습니다.

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

//| test.mq4 |

//| Copyright © 2011, Test Inc. |

//| test.net - 테스트 리소스 및 정보. |

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

#property copyright "Copyright © 2011, Test Inc."

#속성 링크 "http://www.test.net"

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

//| 라벨 |

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

#define ccilabel "CCIValue"

#define rsilabel "RSIValue"

#define stochlabel "StochValue"

#define upperbandlabel "UpperBandValue"

#define lowerbandlabel "LowerBandValue"

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

//| 전문가 초기화 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 초기화 해제 기능 |

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작()

{

//----

//================================================== ====================

// 동적 상대 강도 지수(Dynamic Relative Strength Index)

//================================================== ====================

이중 RSI;

이중 상위 대역;

이중 LowerBand;

RSI=iCustom(NULL,0,"동적 영역 RSI",14,0,1);

UpperBand=iCustom(NULL,0,"동적 영역 RSI",14,1,1);

LowerBand=iCustom(NULL,0,"동적 영역 RSI",14,2,1);

//================================================== ====================

// CCI 문제

//================================================== ====================

이중 CCI;

CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1);

//================================================== ====================

// 스토캐스틱 베레켄

//================================================== ====================

더블 스토크;

Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);

//================================================== ====================

// 정보 표시

//================================================== ====================

// CCI값

개체삭제(ccilabel);

ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);

ObjectSetText(ccilabel, "CCI값은 " + 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는 " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue);

// RSI값

개체삭제(rsilabel);

ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);

ObjectSetText(rsilabel, "RSI값은 " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue);

// 상위 밴드 값

ObjectDelete(상위 밴드 레이블);

ObjectCreate(상단 밴드 레이블, OBJ_LABEL, 0, 0, 0);

ObjectSet(상단 밴드 레이블, OBJPROP_XDISTANCE, 20);

ObjectSet(상단 밴드 레이블, OBJPROP_YDISTANCE, 80);

ObjectSetText(upperbandlabel, "UpperbandValue는 " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue);

// 낮은 밴드 값

ObjectDelete(lowerbandlabel);

ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);

ObjectSetText(lowerbandlabel, "LowerBandValue는 " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue);

//----

리턴(0);

}

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

 

KG 지원 및 저항 모드

여보세요,

첨부된 지지 및 저항 지표 중 하나를 수정할 사람이 필요합니다. 첫 번째는 브레이크아웃이 발생하면 경고가 표시됩니다. 새로운 지지선이나 저항선이 나타나면 바로 경고가 필요합니다. 이 지표는 최고의 지지선/저항선 지표 중 하나이며 특히 더 높은 기간에 매우 강력합니다.

감사해요

kg_support_and_resistance.mq4 또는

kg_support_and_resistance_alert_revision_2.ex4