코딩 도움말 - 페이지 483

 

아, 당신은 정말 스타입니다. 나는 거래를 좋아하지만 당신의 도움 없이는 불가능할 것입니다. 다시 한번 감사합니다

 
xtractalpha:
안녕,

누군가 내 LotsizeCalc() 함수를 도와주세요.

내 마지막 거래가 실패했다면 내 lotsize에 'MartingaleAmount'를 곱하고 싶습니다. 내 마지막 거래가 승자였다면 '일반' lotsize를 사용하고 싶습니다. 불행히도 EA를 백테스트하면 저널에서 오류 4051이 발생합니다.

"LotsizeCalc()" 함수 없이 EA를 실행하려고 할 때 EA가 작동하기 때문에 그것은 lotsize와 관련이 있습니다.

내 lotsize 기능이 작동하지 않는 이유를 아는 사람이 있습니까?

미리 감사드립니다.

티에리

extern int MaximumTrades = 10; extern double StopLoss=25; extern double TakeProfit=50; extern double MartingaleAmount = 1.5; input double LotSize=0.1; int magic; double pips; int tradeNumber; string ScreenComment; double martinlot; double martinsize;

[/PHP]

double LotsizeCalc() { if(OrderSelect(lastTradeTicket(),MODE_HISTORY)) if(OrderProfit()<0 && tradeNumber 0){ if(OrderSelect(ticket,SELECT_BY_TICKET)){ sl = OrderOpenPrice()+(StopLoss*pips); if(StopLoss==0)sl=0; tp = OrderOpenPrice()-(TakeProfit*pips); if(OrderType()==OP_BUY){ sl = OrderOpenPrice()-(StopLoss*pips); if(StopLoss==0)sl=0; tp = OrderOpenPrice()+(TakeProfit*pips); } if(!OrderModify(ticket,price,sl,tp,0,Magenta)) { err = GetLastError(); Print("Encountered an error during modification!"+(string)err+" "+ErrorDescription(err) ); } } else{//in case it fails to select the order for some reason Print("Failed to Select Order ",ticket); err = GetLastError(); Print("Encountered an error while seleting order "+(string)ticket+" error number "+(string)err+" "+ErrorDescription(err) ); } } else{//in case it fails to place the order and send us back a ticket number. err = GetLastError(); Print("Encountered an error during order placement!"+(string)err+" "+ErrorDescription(err) ); if(err==ERR_TRADE_NOT_ALLOWED)MessageBox("You can not place a trade because \"Allow Live Trading\" is not checked in your options. Please check the \"Allow Live Trading\" Box!","Check Your Settings!"); } }

티에리

이 기능을 사용하여 마지막으로 마감된 주문이 손익으로 마감되었는지 확인할 수 있습니다.

[PHP]더블 lastOrderProfit(int magicNumber=0)

{

날짜/시간 마지막 시간 = 0;

이중 lastProfit = 0;

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

{

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

if (magicNumber!=0)

if (OrderMagicNumber() != magicNumber) 계속;

if (OrderSymbol() != Symbol()) 계속;

if (OrderCloseTime() <= lastTime) 계속;

마지막 시간 = 주문 닫기 시간();

lastProfit = OrderProfit()+OrderSwap()+OrderCommission();

}

반환(마지막 이익);

}

lastOrderProfit() 함수 의 결과인지 확인하고 < 0이면 마틴게일 규칙을 적용하십시오.

 

안녕 믈라덴! 나 또...

이러한 라인에 대해 설정된 버퍼가 없는 것 같기 때문에 iCustom을 사용하는 EA에서 이 표시기의 라인을 어떻게 사용할 수 있습니까?

감사해요

파일:
 
Jason2005:
안녕 믈라덴! 나 또...

이러한 라인에 대해 설정된 버퍼가 없는 것 같기 때문에 iCustom을 사용하는 EA에서 이 표시기의 라인을 어떻게 사용할 수 있습니까?

감사해요

물건들이다

이름으로 개체에 액세스할 수 있습니다(개체의 정확한 이름을 알아야 하지만 표시기가 차트에서 활성화되어 있어야 하며 해당 개체는 차트에 그려야 함).

 
mladen:
개체 이름으로 개체에 액세스할 수 있습니다(개체의 정확한 이름을 알아야 하지만 표시기가 차트에서 활성화되어 있어야 하며 해당 개체는 차트에 그려야 함).

엄청난. 그렇다면 EA의 지표를 어떻게 불러야 할까요? iCustom이 아닌 다른 것을 사용하거나 제가 잘못 이해한 건가요... 감사합니다 mladen

 
Jason2005:
엄청난. 그렇다면 EA의 지표를 어떻게 불러야 할까요? iCustom이 아닌 다른 것을 사용하거나 제가 잘못 이해한 건가요... 감사합니다 mladen

이 표시기는 단순히 각 100핍 세그먼트의 0,20,50,80핍 수준을 그립니다. 가장 간단한 방법은 해당 수준이 EA와 교차하는지 확인하는 것입니다.

개체 이름 (및 해당 가격)을 사용하려고 하면 최고 고가 및 최저 최저에 따라 달라지기 때문에 라인의 정확한 이름을 알 수 없습니다. 변경 대상입니다. 위에서 설명한 모드를 사용하십시오.

 
mladen:
이 표시기는 단순히 각 100핍 세그먼트의 0,20,50,80핍 수준을 그립니다. 가장 간단한 방법은 해당 수준이 EA와 교차하는지 확인하는 것입니다. 개체 이름(및 해당 가격)을 사용하려고 하면 최고 고가 및 최저 최저에 따라 달라지기 때문에 라인의 정확한 이름을 알 수 없습니다. 변경 대상입니다. 위에서 설명한 모드를 사용하십시오.

그렇게 하는 방법에 대한 예를 들어주시겠습니까... 너무 많이 물어서 죄송합니다. 코딩을 시작하고 구매 또는 판매 조건에서 해당 수준을 초과했는지 확인 하는 방법을 모릅니다.

 
Jason2005:
그렇게 하는 방법에 대한 예를 들어주시겠습니까... 너무 많이 물어서 죄송합니다. 코딩을 시작하고 구매 또는 판매 조건에서 해당 수준을 초과했는지 확인하는 방법을 모릅니다.

제이슨2005

첨부한 표시기에 코드가 어떻게 수행되는지

 
mladen:
Jason2005 첨부한 표시기에서 코드가 어떻게 수행되는지 확인했습니다.

그럼 이거겠죠?

MathMod(i, 5) == 0.0
 
mladen:
티에리

이 기능을 사용하여 마지막으로 마감된 주문이 손익으로 마감되었는지 확인할 수 있습니다.

double lastOrderProfit(int magicNumber=0)

{

datetime lastTime = 0;

double lastProfit = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==false) break;

if (magicNumber!=0)

if (OrderMagicNumber() != magicNumber) continue;

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

if (OrderCloseTime() <= lastTime) continue;

lastTime = OrderCloseTime();

lastProfit = OrderProfit()+OrderSwap()+OrderCommission();

}

return(lastProfit);

}

lastOrderProfit() 함수의 결과인지 확인하고, < 0이면 마틴게일 규칙을 적용하십시오.


안녕 믈라덴

응답해 주셔서 감사합니다.

내 lastTradeTicket() 함수가 동일한 작업을 수행하기 때문에 lastorderprofit 함수는 필요하지 않습니다.

제 EA 좀 봐주시겠어요?

코드 수정을 요청하는 것은 아니지만 제가 코딩을 잘못한 부분을 알려주시면 정말 감사하겠습니다.

미리 감사드립니다.

티에리

53_martingale.mq4

파일: