묻다! - 페이지 134

 
bakhul:
이 필터가 0 레벨을 넘거나 색상이 변경될 때 이 필터에 경고를 추가하도록 도와줄 사람이 있습니까? 나를 도와주고 싶어하는 당신에게 감사합니다 ...

여기에 게시하는 것이 운이 좋을 수도 있습니다. https://www.mql5.com/en/forum

 

현재 EA에서 매수 및 매도 주문 을 열 수 있는 수

나는 누군가가 이미 이 질문에 답을 해주기를 바라며 134페이지를 읽었습니다. 그런데 운이 나빴다..

모든 유형의 크로스 오버, 피벗 포인트, ATR 범위를 만들고 조정한 후 내가 가진 수백 가지 지표로 생각할 수 있는 전략을 세웁니다. 완전히 자동화된 EA에는 코딩해야 하는 수많은 변수가 필요하다는 것을 깨달았습니다. 그래서 저는 대신 사용자 지원 전문가 고문을 만들기 시작했습니다. 글쎄, 당면한 질문에...

EA가 현재 시장에서 개설한 공개 매수 및 공개 판매 주문 수를 계산하는 데 사용할 수 있는 코드입니다.

EA에서 현재 주문한 주문을 상쇄하기 위해 동일한 계정으로 주문을 할 것이기 때문에 총 미결 주문이 몇 개인지 계산하고 싶지 않습니다.

결국에는 헤지 목적으로 매수 및 매도 주문 비율을 변경하는 필터를 설정하고 싶습니다.

 

조금만 도와주세요...

안녕 모두,

나는 원래 이것을 새 스레드로 게시했지만 다른 프로그래밍 스레드로 옮겨졌고(나는 그것의 이동 BTW에 대해 이의가 없습니다) 이제 그 스레드의 포스터 양으로 인해 길을 잃은 것 같습니다.

여기 누군가가 나를 도울 수 있습니까?

거의 7일 간의 시행착오와 자르기 및 붙여넣기, 몇 시간의 연구 끝에 첫 번째 EA를 거의 완성했습니다....

누군가 EA에 종료 또는 중지 기능 을 발행하는 방법을 알려주시겠습니까?

EA가 현재 및 보류 중인 모든 거래를 삭제하고 자본이 10,000에 도달한 후 종료하기를 바랍니다. 아래는 지금까지의 코드 부분입니다.

bool StopTrade;

int total = OrdersTotal(), cnt = 0, ExitAtEquity=10000;

for (cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

if (AccountEquity ()== ExitAtEquity)//(TimeCurrent()- OrderOpenTime() >= ActiveMinutes*60 )

{if(OrderType()==OP_BUY)

OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);

if(OrderType()==OP_SELL)

OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);

if(OrderType()>OP_SELL)

OrderDelete(OrderTicket());

StopTrade=true;}

}

if (dclose==dopen && OrdersTotal() < ConcurrentTrades && StopTrade != true)

보시다시피 EA는 Equity를 확인한 다음 StopTrade 변수의 bool 값을 true로 설정합니다. 그런 다음 EA는 명령을 승인하고 한 주기 동안 StopTrade != true 아래에서 아무 것도 처리하지 않지만 StopTrade의 bool 값이 재설정되고 거래가 계속되는 것 같습니다.

첫째, 내가 하고 있는 방식으로 필요한 작업을 수행할 수 있는 방법이 있습니까?

둘째, 단순히 EA에 종료하도록 지시하는 데 사용할 수 있는 기능이 있습니까?

모든 도움에 감사드립니다.

주의

cutzpr - How Many Currently open Buy, and Sell Orders from EA

내 코드의 일부가 당신이 필요로 하는 것을 도울 수 있다고 생각합니다.

 

모든 미결 주문을 순환시키는 루프가 시작될 것이라고 생각했지만, EA가 발주한 주문 만 보고 내가 받은 주문은 무시하도록 EA에 무엇을 알려야 할지 모르겠습니다. 수동으로 넣습니다. 감사해요.

 

매직넘버

cutzpr - 매직 넘버를 사용하고 다음과 같은 것을 사용해야 합니다:

( cnt = ; cnt >= 0 ; cnt -- )

{

주문 선택(0,SELECT_BY_POS,MODES_TRADES);

if (OrderMagicNumber()== yourmagicnumber )

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

 

그 코드를 살펴보니 아래에 이 코드가 떠올랐습니다. 제대로 코딩이 되었는지 모르겠습니다. 내가 설정

정수 MaxLong=5, MaxShort=5;

외부 더블 매직=10000;

외부 정수 MaxOpenOrders=10;

그래서..

if (b<=MaxLong)

{거래

}

if(s<=MaxShort)

{거래

}

그러나 EA는 여전히 최대 매수와 최대 매도를 보내고 있습니다. 각각의 주문 수를 세고 MaxLong 및 Short로 제한하는 대신. 코드에 문제가 있음을 알고 있지만 볼 수 없습니다.

for (int cnt = total ; cnt >=0 ; cnt-- )

{

OrderSelect(0,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber()==Magic)

{if(OrderType()==OP_BUY)

{

b++; // add order to Long Quantity

if(TP != 0)

{

if(b!= 0)

{

if(Bid >= ((OrderOpenPrice()+TP*Poin)+Spread))

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // Long position closed.

CMT=OrderCloseTime();

b--; // Long Order closed. Remove one order from total Longs

return(0);

}

}

}

}

if (OrderMagicNumber()==Magic)

{if(OrderType()==OP_SELL)

s++; // Add one to Short order Quantity

if (TP != 0)

{

if(s!= 0)

{

if(Ask <= ((OrderOpenPrice()-TP*Poin)+Spread))

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // Short position closed.

CMT=OrderCloseTime();

s--; // Short Order Closed. Remove one order from total shorts

return(0);

}

}

}

}

}
 
cutzpr:
그 코드를 살펴보니 아래에 이 코드가 떠올랐습니다. 제대로 코딩이 되었는지 모르겠습니다. 내가 설정

정수 MaxLong=5, MaxShort=5;

외부 더블 매직=10000;

외부 정수 MaxOpenOrders=10;

그래서..

if (b<=MaxLong)

{거래

}

if(s<=MaxShort)

{거래

}

그러나 EA는 여전히 최대 매수와 최대 매도를 보내고 있습니다. 각각의 주문 수를 세고 MaxLong 및 Short로 제한하는 대신. 코드에 문제가 있음을 알고 있지만 볼 수 없습니다.

글쎄, 나는 당신이 일을 너무 복잡하게 생각합니다. 하나의 큰 기능 대신 몇 개의 짧은 코드 부분을 사용해 보십시오. 이것은 당신에게 약간의 힌트를 줄 것입니다:

int totalOrders(int type)

{

int totalNumber = 0;

for (int cnt = total ; cnt >=0 ; cnt -- )

{

OrderSelect( cnt ,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderType() == type) totalNumber++;

}

return(totalNumber);

}

[/CODE]

AND HERE IS EXAMPLE HOW YOU CAN USE IT

[CODE]

int totalBuy = totalOrders(OP_BUY);

int totalSell = totalOrders(OP_SELL);

if( (totalBuy + totalSell) < MaxOpenOrders)/*TOTAL NUMBER OF ORDERS WASN'T REACHED*/

{

if(totalBuy <= MaxLongOrders)

{

//OPENING LONG IS PERMITED

}

if(totalSell <= MaxShortOrders)

{

//OPENING SHORT IS PERMITED

}

}

 

[ASK] 표시기 "SilverTrend_Signal"

저는 forex 및 mql4 프로그래밍 의 초보자입니다. SilverTrend_Signal 표시기가 있습니다(여기에 첨부).

이 표시기에서 EA를 만들고 싶지만 이 표시기에 문제가 있습니다. 신호가 변경될 수 있습니다

같은 막대에서 상승 추세 신호 화살표가 차트에 나타난 다음 사라질 수 있습니다.

같은 막대에서 하락 추세 신호 화살표로 변경합니다. 누군가 이 문제를 해결하는 데 도움을 줄 수 있습니까?

나는 M1 기간과 EU에서 이 지표를 사용합니다.

매우 감사합니다.

(미안해, 내 영어 실력이 부족해)

파일:
 

내 개인적인 의견은 신호를 다시 그리는 표시기를 사용 하지 않아야 한다는 것입니다. 특히 M1 차트에서. 신호가 너무 자주 변경됩니다. 당신은 단지 불안정한 신호와 문제를 요구하고 있습니다. 과거의 역사는 과거이기 때문에 좋아 보입니다.

 
willya:
저는 외환 및 mql4 프로그래밍의 초보자입니다. SilverTrend_Signal 표시기가 있습니다(여기에 첨부).

이 표시기에서 EA를 만들고 싶지만 이 표시기에 문제가 있습니다. 신호가 변경될 수 있습니다

같은 막대에서 상승 추세 신호 화살표가 차트에 나타난 다음 사라질 수 있습니다.

같은 막대에서 하락 추세 신호 화살표로 변경합니다. 누군가 이 문제를 해결하는 데 도움을 줄 수 있습니까?

나는 M1 기간과 EU에서 이 지표를 사용합니다.

매우 감사합니다.

(미안해, 내 영어 실력이 부족해)

이것이 어떻게 다시 칠해지는지 확실하지 않지만 현재 막대에서만 수행되는 경우 막대(확인됨) 닫기에서 신호를 사용하면 괜찮을 것입니다.

현재 막대보다 더 많이 다시 칠하면 EA에 대한 신호를 사용하는 것을 잊을 수 있습니다.

FerruFx