코딩하는 방법? - 페이지 311

 

안녕 Mladen, 언제나처럼, u rock!

mladen:
Terrance 그런 경우에는 Close[0]을 사용하십시오. 거의 모든 EA가 그 목적으로 close를 사용하고 있으므로 여러분에게도 효과가 있을 것이라고 생각합니다.
 

...

막대가 시작될 때만 EA가 실행되는 경우 몇 가지 이유가 있을 수 있습니다.

- 신규 바에서만 작동하는 것으로 제한됩니다. 이 접근 방식은 후행 정지 및 일부 유사한 항목을 관리해야 하는 경우 몇 가지 문제가 있지만 고정 정지 손실과 함께 작동하고 이익을 취하는 경우 모두 동일합니다.

- 또는 닫힌 막대에서 신호를 확인하는 것입니다(이는 신호를 확인하는 가장 일반적이고 가장 좋은 방법). 결과적으로 새로운 막대가 형성될 때 하는 것처럼 보이지만 실제로는 막 형성된 닫힌 막대에서 신호를 받고 있습니다. 닫힌 막대 신호에 대한 작업은 EA의 모범 사례이며 EA가 그렇게 작동하는 경우 아무 것도 변경하지 않는 것이 좋습니다.

Premeus:
내 EA가 M1 시간 프레임에서 가격 이동 사이에서 실행되지 않는 것을 발견했습니다. EA가 들어오는 모든 틱마다 실행된다는 것을 알고 있습니다.

그러나 나는 그것이 새로운 막대를 시작할 때마다 실행되는 것을 보았습니다.

내가 오해하고 있습니까?

들어오는 모든 진드기에 힘이 활성화되는 방식이 있습니까?

이용손익으로 내 손익을 통제하려고 한다 핍이 아닙니다. 스파이크가 발생하면 EA는 새로운 막대가 발생할 때까지 설정 이익 또는 손실에 도달하면 주문을 닫지 않습니다.

누구든지이 문제를 해결하도록 도와주세요.

저는 EA 코딩이 처음입니다.

미리 감사드립니다.
 

고마워요, mladen.

나는 당신의 제안을 시도할 것입니다.

 

코딩의 신, 안녕하세요.

같은 가격에 주문이 이미 존재하는 경우 주문을 열 수 없다는 점에서 주문 보내기 실행을 제어하는 EA 기능을 찾는 데 도움이 필요합니다.

단순 논리: 주문 개시 가격 및 주문 유형 = 기존 주문 개시 가격 및 주문 유형인 경우 종료하고 다음 입력 기준을 찾습니다.

또한 이미 존재하는 가격에서 x핍 떨어져 있는 경우 주문이 실행되지 않도록 하는 기능이 필요합니다.

간단한 논리: 주문 시가 및 유형이 < 마지막 주문 시가 및 유형 + x 핍인 경우 종료하고 다음 진입 기준을 찾습니다.

감사해요,

 

...

다음 2가지 기능을 사용해 보세요.
첫 번째는 이미 정확히 동일한 시가 를 가진 주문이 있는지 확인하는 것입니다.

두 번째는 원하는 가격에서 nnn포인트 이내의 주문이 있는지 확인하는 것입니다.

가격이 같거나 현재 열려 있는 일부 주문의 가격과의 거리가 지정된 거리 이내이면 둘 다 true를 반환합니다.

bool existsAtSamePrice(int magicNumber, double price)

{

for (int i=OrdersTotal()-1; i>=0 ; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (CompareDouble(OrderOpenPrice(),price)) return(true);

}

return(false);

}

//

//

//

//

//

bool existsAtApproximatePrice(int magicNumber, double price, double distance)

{

for (int i=OrdersTotal()-1; i>=0 ; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderMagicNumber()!=magicNumber) continue;

if (MathAbs(OrderOpenPrice()-price)< distance) return(true);

}

return(false);

}

//

//

//

//

//

bool CompareDouble(double val1, double val2)

{

return(NormalizeDouble(val1,Digits)==NormalizeDouble(val2,Digits));

}

Pip:
코딩의 신, 안녕하세요.

동일한 가격에 주문이 이미 존재하는 경우 주문을 열 수 없다는 점에서 주문 보내기 실행을 제어하는 EA 기능을 찾는 데 도움이 필요합니다.

단순 논리: 주문 개시 가격 및 주문 유형 = 기존 주문 개시 가격 및 주문 유형인 경우 종료하고 다음 입력 기준을 찾습니다.

또한 이미 존재하는 가격에서 x핍 떨어져 있는 경우 주문이 실행되지 않도록 하는 기능이 필요합니다.

간단한 논리: 주문 시가 및 유형이 < 마지막 주문 시가 및 유형 + x 핍인 경우 종료하고 다음 진입 기준을 찾습니다.

감사해요,

 
mladen:
몇 가지 이유가 있을 수 있지만 가장 일반적인 이유는 다음과 같습니다.
- 손절매 및/또는 현재 가격에 너무 근접한 이익 실현

- 귀하의 중개인은 ECN/STP 유형 중개인입니다. 이 경우 먼저 손절매로 주문하고 이익을 0으로 설정해야 하며 주문이 열릴 때만 손절매를 수정하거나 이익을 얻을 수 있습니다. 원하는 값 (물론 이전 포인트를 존중)

안녕!

도움에 감사드립니다!

그래서 내가 이해하지 못하는 것이 맞다면 OrderSend에 외부 "규칙"으로 TakeProfit 및 StopLoss를 삽입하면 이 EA가 비 ECN 브로커에서만 제대로 작동합니까?

내 영어에 대해 미안해

 

...

브로커와 같은 ECN/STP를 사용하면 손절매로 주문을 개설하거나 이익을 0으로 설정해야 하며 주문이 이미 개설된 경우에만 손절매를 수정 하거나 이익을 얻을 수 있습니다.

pearl1:
안녕!

도움에 감사드립니다!

그래서 내가 이해하지 못하는 것이 맞다면 OrderSend에 외부 "규칙"으로 TakeProfit 및 StopLoss를 삽입하면 이 EA가 비 ECN 브로커에서만 제대로 작동합니까?

내 영어에 대해 미안해
 
mladen:
예 브로커와 같은 ECN/STP를 사용하면 손절매로 주문을 개설하거나 이익을 0으로 설정해야 하며 주문이 이미 개설된 경우에만 손절매를 수정하거나 이익을 얻을 수 있습니다.

다시 한 번 감사합니다. 그래서... 이 문제를 어떻게 고칠 수 있습니까? 죄송합니다

 

...

내가 말했듯이, 당신은 2 단계로 그것을해야합니다 :

1. 단계 - 손절매를 사용하여 주문을 열고(OrderSend() 사용) 이익 을 0으로 설정

2. 단계 - 해당 주문을 수정(OrderModify() 사용)하여 손절매를 설정하고 원하는 값으로 이익을 얻습니다.

따라서 코드는 1단계 대신 2단계로 작업을 수행하도록 변경되어야 합니다.

pearl1:
다시 한 번 감사합니다. 그래서... 이 문제를 어떻게 고칠 수 있습니까? 죄송합니다
 

코딩을 처음 접하는 사람

안녕하세요 여러분,

저는 코딩이 처음이고 언어와 구문을 천천히 배우고 있지만 MT4가 변수를 업데이트하는 방법에 대한 질문이 생겼습니다.

나는 현재 열려 있는 거래가 가지고 있는 가장 높은 이익을 표시하는 간단한 EA를 코딩하려고 시도했으며 새로운 최고에 도달한 경우에만 업데이트해야 하지만 발생하는 일은 이익만큼 금액이 위아래로 움직이고 있다는 것입니다. 코드 논리에서 내 오류를 보는 것 같습니다.

선택한 거래가 아직 열려 있는지 확인 합니다.

t_CloseTime=주문 닫기 시간(); //주문이 완료되지 않은 경우 0을 반환합니다.

if(t_CloseTime==0) //0이 아니면 주문이 종료됩니다.

{

if(OrderProfit() > LastProfitHigh) LastProfitHigh=OrderProfit();

if(LastProfitHigh >= MinProfit && MinProfitReached==false) MinProfitReached=true;

}//엔디프

따라서 논리가 맞다면 이 변수 "LastProfitHigh"가 위아래로 움직이는 이유는 무엇입니까?...

당신의 도움을 주셔서 감사합니다.

사유: