본문 바로가기

트레이딩/메타트레이더 코딩   ( 51 )


메타 트레이더 . 외장하드 설치 . 사용자 데이터도 외장하드에서 집중관리. 개요 - 외장하드에 메타 트레이더 설치. 문제점. 여러 PC 에서 메타 트레이더 코딩 작업시 소스 파일 관리 어려움. 메타트레이더 매매전략 개발 작업을 1개의 컴퓨터에서만 하지 않고 , 노트북에서도 작업하고 집 혹은 회사에 있는 PC 에서도 작업하는 식으로 여러 PC 에서 작업하는 경우 , 각 PC에서의 작업 결과 파일이 각 PC마다 저장되어 나중에는 관리 불가능 사태까지 벌어진다. 본인 작업 결과물이 이렇게 분산 되는 방식은 절대 좋지 않은 개발환경이다. 자신이 노력한 가치가 일관되게 누적 저장 가능하도록 단일 저장소에 지속, 일관된 형식으로 저장되는 방식으로 개발 환경 설정해야한다. 해결책. 개발용 메타트레이더는 PC 들에 설치하지 않고, 외장하드에 메타 트레이더 설치함과 동시에 나의 작업파일도 메타.. 2022. 12. 8.
MQL5. CCI (Commodity Channel Index) 코드. void OnTick() { double my_cci = Get_CCI(_Period,14); Print(my_cci); } double Get_CCI(ENUM_TIMEFRAMES timeframe,int ma_period) { double arr_cci[]; int CCIretv = iCCI(_Symbol,timeframe, ma_period, PRICE_TYPICAL); ArraySetAsSeries(arr_cci, true); CopyBuffer(CCIretv,0,0,3,arr_cci); return NormalizeDouble(arr_cci[0],2); } 동영상. 연관 Indicator : CCI. Commodity Channel Index 개요. 정의. where, Pt = (High .. 2021. 3. 1.
MQL5. CSymbolInfo. class for easy access to the symbol properties. CSymbolInfo - class for easy access to the symbol properties. - #include - Symbol Specification 에서의 정보들 확보가능. Swaps SwapMode Gets the swap calculation mode SwapModeDescription Gets the swap calculation mode as a string SwapRollover3days Gets the day of triple swap charge SwapRollover3daysDescription Gets the day of triple swap charge as a string Margins and flags MarginInitial Gets the value of .. 2020. 11. 21.
MQL5. Symbol Specification Symbol Specifications 아래 왼쪽은 EURUSD, 오른쪽은 BTCUSD Digits - 종목 가격의 소수점이하 자리수. - EURUSD 는 1.118542 처럼 소수점이하 5개까지, BTCUSD는 18679.105 소수점 이하 3개. Margin Currency, Profit Currency 2개 통화 가치 비율 통화1가치/통화2가치 에서 분자에 있는 통화1을 Margin Currency, 분모에 있는 통화2를 Profit Currency . 용어 : Margin Currency , Profit Currency 는 통상적이지 않으며, Base Currency, Quote Currency 가 더 일반적인 용어임 상세 : https://igotit.tistory.com/3502 Contrac.. 2020. 11. 21.
MQL5. 포지션 생성, 청산 시점 검출 이벤트 드리븐 코드. 개요 - 이벤트 드리븐 방식으로 포지션 생성,제거(청산) 시점 검출 코드 클래스로 구현. 백그라운드. - 메타트레이더 EA 구현시 포지션 정보를 함수 호출하여 폴링으로 확인하는건 이 코드예 에서 처럼 간단하게 구현가능하다. - 그러나, 포지션 변경이 언제 생길지 알수 없는데 수시로 함수호출하는 폴링방식으로 포지션의 생성 , 청산을 확인 하는 코드는 비효율적일 수 밖에 없기에, 이벤트 드리븐 방식으로 포지션 생성/청산 시점 검출방식으로 구현되어야 한다. - 포지션 생성, 청산시 호출되는 이벤트핸들러는 OnTrade() 이며, 이곳에서 구현하면 되는데, OnTrade 로는 포지션외에 주문관련 이벤트를 비롯하여 여러 가지 이벤트 요인에 의하여 호출된다. - OnTrade() 로 포지션 생성/청산 정보 검출하려.. 2020. 11. 9.
MQL5. CArray. 동적 배열 CArray - CArray 를 베이스 클래스로 하는 CArrayChar, CArrayDouble, CArrayFloat, CArrayInt, CArrayLong, CArrayObj, CArrayShort, CArrayString 코드예. - CArrayLong - 다른 것도 거의 동일. #include CArrayLong arr_keys_deleted; arr_keys_deleted.Add(200) ; // 요소추가. for(int idx = 0; idx 2020. 11. 9.
MQL5. CHashMap iteration.반복 MQL5 의 컬렉션은 컬렉션 자체의 반복 수단 제공되지 않으며, 컬렉션 요소를 CopyTo 로 array 로 복사한 이후 array로 루프돌림 #include CHashMap map_My; string keys[]; int values[]; map_my.CopyTo(keys, values); // 맵의 키,값을 array 로 복사하고 아래 array 에서 루프돌림. for(int idx=0; idx < map_My.Count(); idx++) { keys[idx]; values[idx]; } 첫 등록 : 2020.11.09 최종 수정 : 단축 주소 : https://igotit.tistory.com/2693 2020. 11. 9.
MQL5. 포지션 함수, 클래스 활용코드 . 심볼1개의 모든 포지션등. 1. 계정의 모든 심볼의 모든 포지션 정보들 확보하기. #include CPositionInfo m_PosiInfo; int Proc_SupplyPosition() { int num_position_all_symbol = PositionsTotal(); // 계좌의 모든 포지션 수량 반환됨. for(int idx_posi = 0 ; idx_posi < num_position_all_symbol; idx_posi++) { m_PosiInfo.SelectByIndex(idx_posi); // 인덱스로 포지션 선택하고, Proc_GetInfoPosi(); // 현재 선택된 포지션 1개에서 필요한 정보 확보. } return 1; } void Proc_GetInfoPosi() { // 필요한정보들 m_PosiI.. 2020. 11. 8.
MQL5. 밀리초, 마이크로초 단위 시간 함수 . 일반 date time GetTickCount - PC 시작 이후 경과시간 밀리초 반환. Documentation on MQL5: Common Functions / GetTickCount GetTickCount The GetTickCount() function returns the number of milliseconds that elapsed since the system start. Return Value Note Example: #define MAX_SIZE 40 //+------------------------------------------------------------------+ //| Script for measu www.mql5.com GetMicrosecondCount - "MQL5 프로그램" 시작이후 경과.. 2020. 10. 15.
MQL5. MqlTick. CopyTicks. 틱 데이터. 구조체 MqlTick // 아래 멤버의 바이트 사이즈는 MQL5 의 경우임. MQL4 는 다를 수 있음. struct MqlTick { datetime time; //8바이트. Time of the last prices update double bid; //8바이트. Current Bid price double ask; //8바이트. Current Ask price double last; //8바이트. Price of the last deal (Last) ulong volume; //8바이트. Volume for the current Last price long time_msc; //8바이트. Time of a price last update in milliseconds uint flags; //4바이트.. 2020. 10. 15.
MQL5. CopyTime. Open.High.Low.Close.TickVolume.RealVolume.Spread. 개요. MQL5 에서 캔들 데이터의 요소(Time, Open, High, Low, Close, TickVolume, RealVolume, Spread) 개별적으로 배열로 확보하는함수들. 비교. CopyRates 의 경우엔 구조체 MqlRates 의 배열로 확보하는 함수인데, 실제 데이터를 활용하는 경우 MqlRates 의 배열보다는 각 멤버의 배열로 구성된 것이 활용상 더 편리한 경우가 많다. 즉, 구조체 MqlRates 의 배열로 시리즈 데이터를 받은 경우 종가들만 그리기 위해서는 별도로 MqlRates 에서 종가들만 골라내는 추가의 변환코드가 필요한 반면, 각 멤버의 배열로 받아둔 경우 별도의 변환 코드 없이 즉시 활용가능한 시리즈 데이터들이 마련된다. 구조체 MqlRates , MqlRates 의 .. 2020. 10. 12.
MQL5. MqlRates. CopyRates MqlRates struct MqlRates { datetime time; // Period start time double open; // Open price double high; // The highest price of the period double low; // The lowest price of the period double close; // Close price long tick_volume; // Tick volume int spread; // Spread long real_volume; // Trade volume }; // Code Example void OnStart() { MqlRates rates[]; int copied=CopyRates(NULL,0,0,100,rates); .. 2020. 10. 11.
MQL5. Access to Timeseries and Indicator Data 개요 - MQL5 에서의 timeseries 형식은 인덱스0이 최신의 것이고, 인덱스 증가할 수록 과거 정보가 기록되어있다. - 틱, 캔들, 인디케이터 타임시리즈 데이터를 배열로 복사하는 함수 제공. 캔들 구조체, 캔들 시리즈 확보함수. MQL5. MqlRates. CopyRates MqlRates struct MqlRates { datetime time; // Period start time double open; // Open price double high; // The highest price of the period double low; // The lowest price of the period double close;.. igotit.tistory.com 틱 구조체, 틱 시리즈 확보함수. M.. 2020. 10. 11.
MQL5. AccountInfoString. 메타 연결된 서버 정보. string AccountInfoString( ENUM_ACCOUNT_INFO_STRING property_id // Property identifier ); // example void OnStart() { //--- Show all the information available from the function AccountInfoString() Print("The name of the broker = ",AccountInfoString(ACCOUNT_COMPANY)); Print("Deposit currency = ",AccountInfoString(ACCOUNT_CURRENCY)); Print("Client name = ",AccountInfoString(ACCOUNT_NAME)); Print("T.. 2020. 10. 10.
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.

.    
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     .