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

 
matrixebiz:
알겠습니다. 집에 도착하면 시도해 보겠습니다. 그런데 왜 이미 구매 주문과 함께 작동합니까? 감사해요

Sell 주문 에 있을 수 있지만 가격이 Buy stop 변경 코드의 조건을 충족하므로 변경되고 더 이상 Sell 섹션의 조건을 충족하지 않으므로 거기에서 변경되지 않습니다.

빅비

 

Big Be에게 도움을 주셔서 감사합니다. 하지만 방금 내 이전 코드 작동한다는 것을 깨달았지만 수정하려면 SELL 주문 에 StopLoss를 사용하도록 설정해야 합니다.

BUY 주문과 함께 작동하기 위해 MoveStopOnce에 대한 TakeProfit을 활성화할 필요가 없지만 SELL 주문을 수정하려면 MoveStopOnce에 대한 StopLoss를 활성화해야 합니다.

오, 글쎄요. 이유를 모르면 코드를 좀 더 자세히 살펴봐야 알 수 있습니다.

편집: 다음으로 변경하는 경우;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

잘 작동하는 것 같습니다.

감사해요

 

위치 크기 계산기에 대한 도움이 필요합니다.

확인,

그래서 "Kelly Formula"를 기반으로 한 함수로 Position Sizing 계산기를 만들고 있습니다.

(승률-((1-승률)/(평균 승/평균 손실)

필요한 변수에 대한 수동 입력(extern)으로 작업하는 모든 코드와 계산을 가지고 있으며 이제 특정 계정 정보를 호출하여 함수가 동적으로 작동하도록 하려고 합니다(즉, 우승 일관성 비율(%)을 계산하고 싶습니다. 이기는 거래당 평균 #핍, 손실 거래당 평균 #핍)

세 가지 기능(WinRate AvgWin & AvgLoss)이 작동하는 데 도움이 되는 모든 것을 사용할 수 있습니다. 나는 몇 달 동안 수동 입력 변형을 사용해 왔으며 훌륭하게 작동합니다. 다음은 이 시점까지의 이 (자동) 버전에 대한 전체 코드입니다... 테스트에서 동적 출력을 얻지 못하고 모든 것이 기본 설정(50, 40, 20)으로 돌아갑니다. 테스트를 위해 자체 EA로 설정하고 기존 EA로 쉽게 모듈화할 수 있습니다. 차트에 첨부되면 출력이 로그/전문가 탭에 인쇄됩니다. 프랙탈의 사용은 최대 계정 성장(또는 최소 손실)이 이용되도록 의도적입니다. 참고로 MT 트레이더 플랫폼을 제공하는 대부분의 브로커는 미니 또는 표준 로트에 대한 프랙탈 거래를 허용합니다. 이것은 부분적 로트 포지션을 제거할 수 있는 자금 관리와 함께 미래에 완전 사용을 증명할 것입니다(예: 1랏의 25% 제거). 그래도...

필요한 실시간 계정 정보를 수집하기 위해...

1. 모든 거래를 계산

2. 수익성 있는 거래 계산

등 등

나는 이 문제에 대해 올바른 방향으로 갈 수도 있고 그렇지 않을 수도 있습니다.

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

바다늑대

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

//| KellyFormula.mq4 |

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

#재산권 "바다늑대"

#속성 링크 "시울프"

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

//| 외부 정보 입력 |

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

외부 정수 내 계정 = 1001; //------>>>> 계정 아이디

extern int ExpertID = 500001; //------>>>> 이 EA의 매직 넘버

외부 이중 PipValue = 1.00; //---->>>> 모든 계산에 사용

외부 이중 LotCost= 50.0; //---->>>> 모든 계산에 사용

외부 이중 PercentMax= 24.0; //---->>>> 한 번 @ 최대 % 계정 활용

extern int TradesMax= 3; //------>>>> 최대 동시 거래(예: 24%/3 거래 = 거래당 8%)

extern bool UseKelly= 참; //------>>>> 수동 오버라이드 토글

외부 이중 ManualLots= 1.0; //------>>>> # "UseKelly"가 거짓이면 많이

외부 이중 mWinRate= 50.00; //---->>>> %의 일관성 확보(수동 재정의)

외부 정수 mAvgWin = 40; //---->>>> avg # 승리 거래당 핍(수동 재정의)

외부 정수 mAvgLoss = 20; //------>>>> 손실 거래당 평균 # 핍(수동 무시)

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

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

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

정수 초기화()

{

//----

//----

리턴(0);

}

정수 초기화()

{

//----

//----

리턴(0);

}

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

//| 전문가 시작 기능 |

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

정수 시작()

{

//----

위치크기();

{

Print("Lots=",PositionSize()," WinRate=",WinRate()," AvgWin=",AvgWin()," AvgLoss=",AvgLoss());

}

Comment("현재 시간은 ",TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ... 승률= ",WinRate()," 평균 승률= ",AvgWin ()," 평균 손실 = ",AvgLoss());

//----

리턴(0);

}

//----

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

//| 모든 신규 거래에 대한 포지션 규모 계산 |

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

//------------------------>>>>

이중 PositionSize()

{

//------------------------>>>> KELLY 공식을 사용하지 말고 고정 요금을 사용하십시오.

if(UseKelly == 참)

{

이중 KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()));

이중 PerTrade;

더블 로트;

if(KelyForm > PercentMax)

{

PerTrade = (PercentMax/10)/TradesMax;

}

else if(KelyForm < PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

else if(KelyForm == PercentMax)

{

PerTrade = (KelyForm/10)/TradesMax;

}

랏 = (PerTrade * AccountBalance()/LotCost);

return(MathRound(Lots)/10);

}

}

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

//| 실시간 계정 정보 수집 |

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

//------------------------>>>>

더블 승률()

{

더블 티켓;

이중 CountWins = 0;

for(티켓=0;티켓<OrdersTotal();티켓++)

{

OrderSelect(티켓,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//-------->>>>

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

{

if(OrderClosePrice() >= OrderOpenPrice())

카운트윈스++;

}

그렇지 않으면(주문 유형()==OP_SELL)

{

if(OrderClosePrice() <= OrderOpenPrice())

카운트윈스++;

}

}

}

if(CountWins > 0)

return(MathRound(CountWins/OrdersHistoryTotal())*10);

또 다른

Print("실시간 승률을 사용할 수 없습니다.");

반환(mWinRate);

}

//-------->>>>

//------------------------>>>>

더블 AvgWin()

{

더블 티켓;

이중 CountTrades = 0;

이중 CountPips = 0;

for(티켓=0;티켓<OrdersTotal();티켓++)

{

OrderSelect(티켓,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//-------->>>>

if(OrderType()==OP_BUY && OrderClosePrice()>=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() >= 0)

카운트 핍++;

}

if(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() >= 0)

카운트 핍++;

}

}

}

if(카운트 핍 > 0)

return(MathRound(CountPips/CountTrades)*10);

또 다른

Print("실시간 AvgWin을 사용할 수 없습니다.");

반환(mAvgWin);

}

//-------->>>>

//------------------------>>>>

이중 평균 손실()

{

더블 티켓;

이중 CountTrades = 0;

이중 CountPips = 0;

for(티켓=0;티켓<OrdersTotal();티켓++)

{

OrderSelect(티켓,SELECT_BY_TICKET,MODE_HISTORY);

if(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)

{

//-------->>>>

if(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())

CountTrades++;

{

if(OrderProfit() < 0)

카운트 핍++;

}

if(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice())

CountTrades++;

{

if(주문 이익() < 0)

카운트 핍++;

}

}

}

if(카운트 핍 > 0)

return(MathRound(CountPips/CountTrades)*10);

또 다른

Print("실시간 평균 손실을 사용할 수 없습니다");

반환(mAvgLoss);

}

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

 

받는 사람: 매트릭스비즈

EDIT: if you change to;

if(0 < OrderOpenPrice() - Point * MoveStopTo) {

[/code]

instead of;

[code]

if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {

잘 작동하는 것 같습니다.

감사해요

물론이죠.

빅비

 

Fxpro, 문의

안녕하세요.. 저는 FxPro에서 많은 EA를 구성하는 방법에 대해 묻고 싶습니다.

6자리(추가 1자리)가 있어서 혼란스러워서 S/L과 T/P를 고정했는데 로트를 바꿀 수가 없어요..

거래당 항상 0.4.. 0.1 또는 0.3으로 변경하더라도

10points 3EA를 사용했는데..

도와주세요.. hansen_hardrocker@yahoo.co.id 로 이메일을 보내주세요.

아니면 PM 부탁드립니다..

치어즈 다..

 

Ask_change 부지(fxpro)

Fxpro, 문의

안녕하세요.. 저는 FxPro에서 많은 EA를 구성하는 방법에 대해 묻고 싶습니다.

6자리(추가 1자리)가 있어서 혼란스러워서 S/L과 T/P를 고정했는데 로트를 바꿀 수가 없어요..

거래당 항상 0.4.. 0.1 또는 0.3으로 변경하더라도

10points 3EA를 사용했는데..

도와주세요.. hansen_hardrocker@yahoo.co.id 로 이메일을 보내주세요.

아니면 PM 부탁드립니다..

치어즈 다..

 

저도 원합니다. omidchart@yahoo.com 으로 저를 보내주세요.

 

EA에서 자금 관리 를 활성화했기 때문일 수 있습니다.

 

고마워

matrixebiz:
EA에서 자금 관리를 활성화했기 때문일 수 있습니다.

ㅜㅜ 형..

뉴비야..

 

이 EA를 변경할 수 있습니까?

안녕하세요 프로그래머 여러분,

현재 가격보다 높거나 낮은 스탑 주문 을 하는 이 EA가 있습니다. 내가 필요한 것은 현재 가격 위아래로 지정가 주문을 하는 EA입니다. 모든 매개변수를 동일하게 유지하면서 이 EA를 변경하여 그렇게 할 수 있습니까?

미리 감사드립니다.

파일: