기고글 토론 "Expert Advisor 처음부터 개발하기"

 

새로운 기고글 Expert Advisor 처음부터 개발하기 가 게재되었습니다:

이 기사에서는 최소한의 프로그래밍을 통해 트레이딩 로봇을 개발하는 방법에 대해 알아봅니다. 물론 MetaTrader 5는 트레이딩과 관련한 높은 수준의 제어를 제공합니다. 그러나 수동으로 주문하는 것은 경험이 적은 사용자에게는 상당히 어렵고 위험할 수 있습니다.

이 기사에서 제공한 Expert Advisor는 매개변수 세트로 작업하기 위해 다양한 방식으로 개선될 수 있지만 이를 위해서는 EA가 MetaTrader 5로부터 좀 더 독립적으로 작동하도록 하는 더 많은 코드가 필요합니다.

이 EA의 장점은 코드에는 작성하지 않은 작업 내용을 MetaTrader 5를 사용해서 수행한다는 것이며 따라서 매우 안정적이고 신뢰할 수 있다는 것입니다.




작성자: Daniel Jose

 

좋은 아침입니다,

아주 좋아요, 한 가지 이해가 안 되는 것이 있습니다. WIN 및 WDO에서 주문하면 EA는 "레버리지"에 입력 한 계약 수로 6 개의 주문을 엽니 다. 그래서 1계약으로 거래하고 싶어도 6계약이 열립니다.

제가 간과한 개념인가요? 저는 초보자이기 때문에 그 전제에서 시작하겠습니다.

공유해 주셔서 감사합니다.

 
제가 알기로는 알고 트레이딩에 대한 지식이 필요합니다...
 
아주 좋아요!
 
joecafrois #:
제가 알기로는 알고 트레이딩을 하려면 알고 트레이딩에 대한 지식이 필요한데...

알고 트레이딩에 대한 지식은 필요하지 않습니다... 그러나 EA (Expert Advisor)를 사용할 때마다 활성화해야하며 그렇지 않으면 EA가 작동하는 방식이 제한됩니다.

 
Feresther 계약 수로 6 개의 주문을 엽니 다. 그래서 1 계약으로 거래하고 싶어도 6 개가 열립니다.

제가 간과한 개념인가요? 저는 초보자이기 때문에 그 전제에서 시작하겠습니다.

공유해 주셔서 감사합니다.

마우스를 클릭 할 때 시스템이 두 개 이상의 주문을 보낼 수 있으며 이유는 다양 할 수 있지만보고 해 주셔서 감사합니다 😁👍,이 문제를 해결하려면 마우스를 클릭 할 때 추가 테스트를 추가해야하며 수정하거나 추가 할 포인트는 녹색으로 표시됩니다 .... 올바른 방법으로 입력했는지 확인하십시오. 그렇지 않으면 주문이 전송되지 않거나 서버에서 수락되지 않을 수 있습니다 ... 하지만 이 추가 테스트를 추가하면 문제가 해결됩니다. 로직은 다음과 같습니다. 마우스를 클릭하면 STATIC 변수가 설정되고 마우스를 더 이상 누르지 않을 때만 새 주문을 전송할 수 있도록 재설정됩니다.

inline void MoveTo(int X, int Y, uint Key)
{
        static double d_block = 0; 
        int w = 0;
        datetime dt;
        bool bEClick, bKeyBuy, bKeySell;
        double take = 0, stop = 0, price;
        bEClick  = (Key & 0x01) == 0x01;                //왼쪽 클릭
        bKeyBuy  = (Key & 0x04) == 0x04;                //SHIFT 누름
        bKeySell = (Key & 0x08) == 0x08;                //CTRL 누름
        ChartXYToTimePrice(Infos.Id, X, Y, w, dt, price);
        ObjectMove(Infos.Id, Infos.szHLinePrice, 0, 0, price = (bKeyBuy != bKeySell ? AdjustPrice(price) : 0));
        ObjectMove(Infos.Id, Infos.szHLineTake, 0, 0, take = price + (Infos.TakeProfit * (bKeyBuy ? 1 : -1)));
        ObjectMove(Infos.Id, Infos.szHLineStop, 0, 0, stop = price + (Infos.StopLoss * (bKeyBuy ? -1 : 1)));
        if ((bEClick) && (bKeyBuy != bKeySell) && (d_block == 0)) CreateOrderPendent(bKeyBuy, Infos.Volume, (d_block = price), take, stop, Infos.IsDayTrade); else d_block = 0;
        ObjectSetInteger(Infos.Id, Infos.szHLinePrice, OBJPROP_COLOR, (bKeyBuy != bKeySell ? Infos.cPrice : clrNONE));
        ObjectSetInteger(Infos.Id, Infos.szHLineTake, OBJPROP_COLOR, (take > 0 ? Infos.cTake : clrNONE));
        ObjectSetInteger(Infos.Id, Infos.szHLineStop, OBJPROP_COLOR, (stop > 0 ? Infos.cStop : clrNONE));
};
 
MQ4 버전이 있나요?
 
좋은 글 감사합니다.
 
안녕하세요, 미니 인덱스의 포인트 수와 로트 수는 어디에서 설정하나요?
 
C4rl1n #:
안녕하세요, 미니 인덱스의 포인트 수와 로트 수는 어디에서 설정하나요?

사실, 이 코드에서는 조정이 자동으로 이루어집니다. 트레이더와 거래할 계약 수를 알려주면 코드가 포인트 측면에서 조정합니다... 이 정보는 차트에 전문가 어드바이저를 배치할 때 제공됩니다. 😁👍

 
EA를 개발하고 싶지만 로트 수와 포인트가 일치하지 않기 때문입니다.