트레이딩/메타트레이더 코딩 ( 73 ) MQL5. Order, Deal, Position Order , Deal, Position Trading Operations Position Accounting System - 메타트레이더 에서는 Netting, Hedging 시스템 모두 지원되나, 이를 제공하는 브로커에 따라 헷징가능여부 결정됨. Hedging system. 동일종목에서 shot(sell) , long(buy) 동시 포지션 가능하며, 동일방향 에서도 포지션들이 개별적으로 관리됨. 아래 그림의 경우 eurusd 의 buy 포지션이 2개 있으며 개별적으로 핸들링 가능.즉, 각 포지션 별로 수익액이 계산되고 각 포지션별로 청산 가능. 위 그림의 각 컬럼 항목 - Ticket : 개별 포지션 식별용 고유 아이디로 사용됨. - Time : 포지션 오픈 시각. - Type : sell 혹은 bu.. 2019. 6. 23. MQL5. Account void OnStart() { //--- show all the information available from the function AccountInfoDouble() printf("ACCOUNT_BALANCE = %G",AccountInfoDouble(ACCOUNT_BALANCE)); printf("ACCOUNT_CREDIT = %G",AccountInfoDouble(ACCOUNT_CREDIT)); printf("ACCOUNT_PROFIT = %G",AccountInfoDouble(ACCOUNT_PROFIT)); printf("ACCOUNT_EQUITY = %G",AccountInfoDouble(ACCOUNT_EQUITY)); printf("ACCOUNT_MARGIN = %G",AccountInfo.. 2019. 6. 3. MQL5. input // MQL5 input example // ea file 이나, 클래스 파일등에서 global 변수로 선언하고 앞에 input 기록하면됨.input ENUM_TIMEFRAMES forecast_timeframe_fortrading = PERIOD_M15;////////////////////// 클래스 멤버 변수에서는 input 지정 불가능. input double test = 0.1; // 클래스에서 사용하는 파라메타에 input 처리할려면 전역변수로 선언되어야 함.class CCyFin_DaFoUnit : public CObject{private: public: CCyFin_DaFoUnit(); ~CCyFin_DaFoUnit(); /////////////////////////////.. 2019. 5. 27. MQL5. memcpy 사용하기 /// myglobal.mqh etc. #import "msvcrt.dll" int memcpy(char &Destination[], int Source, int Length); int memcpy(char &Destination[], long Source, int Length); int memcpy(int &dst, int src, int cnt); int memcpy(long &dst, long src, int cnt); #import 첫등록 : 2019년 5월 21일 최종수정 : 본 글 단축주소 : https://igotit.tistory.com/2187 2019. 5. 21. 메타트레이더 . 코딩 . 클래스 non-static 멤버함수를 콜백함수로 전달하기 개요상황 : 2개의 클래스 A(예 CCyFinDevice), B(예 CCyFinOnNewBar) 가 있고, A에서 B 인스턴스 만들어 사용중이고, B에게 A측의 콜백함수를 전달해야함. 문제점클래스의 멤버함수는 콜백으로 전달 불가하므로 A에서 콜백함수를 static 으로 선언하면 B 에게 전달은 가능하다. A 의 static 함수 내부에서는 A의 멤버에 접근 못하게 되고 결국에 C스타일 코드 구조가 나와 모듈화가 달성되지 않아 견고한 구조화를 심각하게 방해한다. 해결책- 클래스 A의 non-static 멤버 함수를 콜백으로 사용가능하게 한다. MQL5 의 EA 에서 클래스 B 로 전달할 콜백함수를 만들고, ea 의 콜백함수 내에서 클래스 A의 멤버함수를 실행하게 하고, 클래스 B측으로 EA의 함수포인터.. 2019. 5. 21. MQL5. DLL. #import MQL5 에서 DLL 로딩하여 사용가능하며, #import 구문으로 감싸서 DLL 로딩하고 사용할 함수들의 선언들 나열하면, MQL5 코드내에서 해당함수 호출 할 수 있다. /// DLL 로딩예 #import "D:\\CyFin\\64bit\\CyFinDevice.dll" int OpenApi_CyFinDevice(); int CloseApi_CyFinDevice(); int Set_SymbolMaster_CyFinDevice(CyENUM_SYMBOL enum_symbol_master); int Set_SymbolHandling_CyFinDevice(CyENUM_SYMBOL &penum_symbol[], int num_symbol); int Set_TimeframeHandling_CyFinDevice(E.. 2019. 5. 19. MQL5. Generic Data Collection. CHashMap. 딕셔너리 /////////////// example 1. dictionary CHashMap d; d.Add("one", 1); d.Add("two", 2); d.Add("three", 3); string keys[]; int values[]; d.CopyTo(keys, values); for (int i=0; i 2019. 5. 18. MQL5. Arrays. 배열 MQL5 에서 정적 배열 - 일반 C와 동일. // MQL5 에서 정적 배열. 일반 C 문법과 동일. double myData[100]; MQL5 에서 동적배열. - 일반 C와 다르며, 사용 편리. // MQL5 Dnamic array double myData[]; // 배열 크기 기록없이 선언하면 동적배열이됨. ArrayResize(myData, 99); // 사용하기 전에 배열 크기 지정함수 호출해서 설정. ArrayResize(myData, 15); // 앞에서 설정된 99를 15로 줄인것. ArrayResize(myData, 0); // 앞에서 설정된 15를 0로 줄인것. ArrayFree(myData); // myData 해제하는것. ArrayResize(myData, 0); 과동일 효과. bo.. 2019. 5. 17. MQL5. struct. 구조체, DLL 함수인자에 구조체 전달 방법 MQL5 구조체 타입선언. // MQL5 에서구조체 선언형식. struct ST_DATA { double V1; ... }; // 즉 아래와 같은 형식은 MQL5 에서는 지원안됨. typedef struct __st_data { double V1; ... }ST_DATA, *PST_DATA; MQL5 에서 DLL함수 인자로 구조체 전달. - 아래 구문에서 DLL 함수인자가 구조체 포인터인 경우 MQL5 에서 import 부분의 처리가 C와 스타일이 다름에 주의.암튼 작용은 C에서 포인터 전달하는것과 동일한 개념은 달성됨. void function(ST_DATA st_dapa); // DLL 함수 인자 구조체인 경우. // MQL5 에서 호출하려면, #import "mydll.dll" void functi.. 2019. 5. 16. 메타트레이더 . 코딩 . function pointer . 콜백 함수 메타트레이더의 함수 포인터, 콜백 - C 에서의 함수 포인터, 콜백 개념 / 문법 과 동일. typedef int (*TFunc)(int,int);TFunc func_ptr;int sub(int x,int y) { return(x-y); }int add(int x,int y) { return(x+y); }int neg(int x) { return(~x); }func_ptr=sub;Print(func_ptr(10,5));func_ptr=add;Print(func_ptr(10,5));func_ptr=neg; // error: neg is not of int (int,int) typePrint(func_ptr(10)); // error: there should be.. 2019. 5. 13. MQL5. EventChartCustom https://igotit.tistory.com/2156 Custom Event 발생예제코드. void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) { switch(id) { case CHARTEVENT_KEYDOWN: EventFire(); break; } } // eventing to all charts except this chart. void EventFire() { long currChart = ChartFirst(); int i=1;//1 for except current chart id =0 while(i= CHARTEVENT_CUSTOM && id 2019. 5. 11. MQL5. Custom Indicator MQL5 에서 Custom Indicator 파일 생성하기. 기본 생성된 Indicator 파일의 골격 코드. #property indicator_chart_window int OnInit() { return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { return(rates.. 2019. 5. 10. MQL5. 소켓통신 메타트레이더 5에서 원격소켓서버와 통신 가능하게 하기 위한 설정. Options 창에서 Allow WebRequest for listed URL 체크하고 통신대상 소켓서버의 아이피 주소 기록해둔다. MQ5 에서 소켓통신 코드예. 실행예. - MQL5 에서 파이썬으로 구현된 소켓서버로 틱데이터 중 Ask 가격을 실시간 전송하는 예. 연관 - 파이썬 측 소켓통신 소스 코드. Python. 소켓통신 Python 소켓서버 구현 코드예. 소켓통신 실행 시험. - 소켓클라이언트로 하이퍼터미널 이용. 상기 파이썬 소켓서버 와 통신하는 소켓클라이언트로 하이퍼 터미널을 이용해도 된다. 아래 동영상에서는 다른 PC에 하.. igotit.tistory.com 첫등록 : 2019년 5월 8일 최종수정 : 본 글 단축주소 : .. 2019. 5. 9. MQL5. 수직선 그리기 아래 예와 같은 수직선 그리기. 코드. int OnInit() { Init_myLine3(); return(INIT_SUCCEEDED); } void OnTick() { MqlRates rates_myCandle[]; ArraySetAsSeries(rates_myCandle,true); // the index = 0 is current candle CopyRates(_Symbol, _Period,0,100,rates_myCandle ); // Copy price data into rates_myCandle[] ObjectMove(_Symbol, "Line3",0,rates_myCandle[99].time,0); // draw line } void Init_myLine3() { ObjectCreate( 0.. 2019. 4. 29. MQL5. 캔들 변경 지점 검출 개요. - MQL5 의 OnTick 에서 호출하여 신규 캔들 시작되는 지점 검출 하기. 코드 int NumBars_Prev = 0 ; int OnInit() { Init_NewBar(); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { if(Check_NewBar() == 1) { Print("New Bar"); } } /* caller : OnInit */ void Init_NewBar() { NumBars_Prev = Bars(_Symbol,_Period); } /* caller : OnTick */ int Check_NewBar() { int retv = 0; int numbar_crnt = Bars(_Sym.. 2019. 4. 29. MQL5. 사각형 그리기 MQL5 에서 챠트에 사각형그리기 (아래 그림 같은것) 코드. void OnTick() { MqlRates rates_myCandle[]; ArraySetAsSeries(rates_myCandle,true); // the index = 0 is current candle CopyRates(_Symbol, _Period,0,100,rates_myCandle ); // Copy price data into rates_myCandle[] ReDraw_myRect1(rates_myCandle[99].time, rates_myCandle[99].high, rates_myCandle[0].time, rates_myCandle[0].low); } void ReDraw_myRect1(datetime x1_time,do.. 2019. 4. 29. MQL5. 클래스 만들기 MQL5 에서는 C++과 동일 문법의 클래스 만들 수 있고, 활용가능하다. 통상 C++ 에서는 클래스 코드작성시 헤더파일에 선언 몰아두고 함수정의는 c 파일에서 작성하나, MQL5 에서는 확장자mqh (헤더파일에 해당) 파일 1개에서 선언과 정의를 모두 구현한다. MQL5 에서 클래스 생성하기. 클래스 이름 예 클래스이름 CCyNewBar 만드는 예. 본인이 만든 클래스 파일들 몰아둘 폴더를 하나 만들고 이 폴더속에 자신이 만든 클래스 몰아두는게 편하다. 본예에서는 아래처럼 CyClass 라는 폴더를 이용한다. 동영상. - MQL5 에서 클래스 만드는 방법과 EA코드내에서 활용하는 과정 전체. MQL5 제공 클래스 상세정보 : https://www.mql5.com/en/docs/basis/types/cl.. 2019. 4. 29. MQL5. ATR ( Average True Range ) 개요. - MQL5 EA코드내에서 ATR 활용하기. - MQL5 내장함수인 iATR 호출 간단 구현가능. - iATR() 호출하면 챠트에 ATR 인디게이터가 표현된다. 코드. void OnTick() { double atr_crnt; atr_crnt = Get_ATR(_Symbol,_Period); } double Get_ATR(string symbol,ENUM_TIMEFRAMES timeframe) { double arrATR[]; int ATRretv = iATR(symbol,timeframe,14); ArraySetAsSeries(arrATR,true); // sort as index 0 is current CopyBuffer(ATRretv,0,0,3,arrATR); // double ATR_Crn.. 2019. 4. 28. 이전 1 2 3 4 5 다음