얼마 전 저는 MQL5용 프로그래밍을 배우기 시작했고 설명서에 익숙해졌고 YouTube에서 몇 가지 웨비나를 시청했습니다. 나는 그럭저럭 몇 가지 겸손한 단계를 밟을 수 있었지만 지금은 이미 3일째 앉아 있는 어려움이 있습니다.
일반적인 개념은 먼저 Ask 및 Bid 가격을 얻은 다음(이를 위해 MqlTick 및 SymbolInfoTick을 사용함) 미결 거래가 있는지 여부(여기에서는 PositionsTotal을 사용함 )를 확인한 다음 미결 포지션이 없는 경우 특정 조건에 따라 Ack 또는 Bid 가격으로 포지션을 엽니다. 즉, 그 전에 구매에 대한 마지막 거래가 이루어졌고 긍정적인 것으로 판명되면(저가 매수하고 고가를 마감), 구매를 위한 새 위치를 열 것입니다 ... 이것은 일반적인 용어입니다 :) 문제는 어떤 것이 극단적인 거래 유형이었는지, 그에 따라 개장한 가격과 마감된 가격에 대한 정보를 얻을 수 없다는 것입니다...
해킹에 성공한 코드는 다음과 같습니다.
//+------------------------------------------------------------------+//| SOVETNIK_01.mq5 |//| Tokarev Sergey |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Tokarev Sergey"#property link"https://www.mql5.com"#property version"1.00"//Мои подключаемые библиотеки#include<Trade\Trade.mqh> //Библиотека для структуры "CTrade", она отвечает за выполнение всех торговых операций#include <Trade\PositionInfo.mqh> //Библиотека для структуры "CPositionInfo" она выдаёт информацию по всем нашим позициям//переменные для подключаемых классов и структур опишем тут
CTrade Trade; //Значение структуры "CTrade" поместим в переменную Trade
CPositionInfo PositionInfo; //Значение структуры "CPositionInfo" поместим в переменную PositionInfoMqlTick last_tick; //В переменной last_tick будут храниться цены последнего пришедшего тика, для этого используем структуру "MqlTick"MqlTradeRequest request;
MqlTradeResult result;
//глобальные переменныеdouble SL; //Переменная необходимая для преобразования размера StopLoss в зависимости от типа брокераdouble TP; //Переменная необходимая для преобразования размера TakeProfit в зависимости от типа брокераdouble Ask; //Переменная в которой будем хранить значения цены спросаdouble Bid; //Переменная в которой будем хранить значение цены предложенияint MagicNumber= 123456 ; //Зададим MagicNumber для идентификации своих ордеровint N; //В переменную N мы занесём кол-во открытых позиций int Lot; //Укажем размер нашего лота//+------------------------------------------------------------------+//| Инструкции которые срабатывают один раз при запуске эксперта |//+------------------------------------------------------------------+intOnInit ()
{
Trade.SetExpertMagicNumber(MagicNumber); //Занесём наш номер в переменную Trade
Lot= 1 ; //Установим размер нашего лотаreturn ( 0 );
}
//+------------------------------------------------------------------+//| Инструкции которые срабатывают один раз при остановке (закрытии) эксперта |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
}
//+------------------------------------------------------------------+//| Инструкции которые срабатывают при каждом новом тике цен |//+------------------------------------------------------------------+voidOnTick ()
{
SymbolInfoTick ( _Symbol ,last_tick); //Заполняем переменную last_tick последними ценами текущего символа, для этого используем "SymbolInfoTick"//Обновляем переменные Ask и Bid для дальнейшего использования
Ask=last_tick.ask;
Bid=last_tick.bid;
Print ( "Цена ПРОДАЖИ = " ,Ask);
Print ( "Цена ПОКУПКИ = " ,Bid);
//Определим существует ли открытая позиция или нет
N= PositionsTotal ();
Print ( "Кол-во открытых позиций: " ,N);
if (N== 0 )
{
//Если позиции нет то определим какая сделка была крайнейHistorySelect ( 0 , TimeCurrent ()); //Загружаем историю наших сделокulong last_deal_ticket; //Объявим переменную для тикета последней сделкиulong deals= HistoryOrdersTotal (); //Обяъвим переменную "deals" куда выгрузим количество наших сделок в целом из истории
last_deal_ticket= HistoryDealGetTicket (( int )deals- 1 ); //получим тикет крайней сделкиPrint ( "Ticket крайней сделки: " ,last_deal_ticket);
long deal_type= HistoryDealGetInteger (last_deal_ticket, DEAL_TYPE ); //Тут получить должны тип крайней сделки из историиPrint ( "Тип крайней " ,deal_type);
//Если была на продажу то покупаемif (deal_type==BUY)
{
//Открываем наш ордер на покупку
Trade.Buy(Lot, Symbol (),Ask,SL,TP);
Print ( "Мы купили по цене: " ,Ask);
}
모두에게 좋은 하루.
얼마 전 저는 MQL5용 프로그래밍을 배우기 시작했고 설명서에 익숙해졌고 YouTube에서 몇 가지 웨비나를 시청했습니다. 나는 그럭저럭 몇 가지 겸손한 단계를 밟을 수 있었지만 지금은 이미 3일째 앉아 있는 어려움이 있습니다.
일반적인 개념은 먼저 Ask 및 Bid 가격을 얻은 다음(이를 위해 MqlTick 및 SymbolInfoTick을 사용함) 미결 거래가 있는지 여부(여기에서는 PositionsTotal을 사용함 )를 확인한 다음 미결 포지션이 없는 경우 특정 조건에 따라 Ack 또는 Bid 가격으로 포지션을 엽니다. 즉, 그 전에 구매에 대한 마지막 거래가 이루어졌고 긍정적인 것으로 판명되면(저가 매수하고 고가를 마감), 구매를 위한 새 위치를 열 것입니다 ... 이것은 일반적인 용어입니다 :) 문제는 어떤 것이 극단적인 거래 유형이었는지, 그에 따라 개장한 가격과 마감된 가격에 대한 정보를 얻을 수 없다는 것입니다...
해킹에 성공한 코드는 다음과 같습니다.
도움을 주신 모든 분들께 미리 진심으로 감사드립니다 :)
나는 오랫동안 종이 책과 전자 형태의 해적에서 멀어졌습니다. 사용.
아름답게 사는 것을 금할 수 없습니다.
새로 온 사람들이 나에게 무엇을 읽을지 묻지만 책에서 무엇을 읽었는지 기억이 나지 않습니다.
모두에게 좋은 하루!
어드바이저 창의 입력 필드에서 드롭다운 목록에서 사용자가 선택한 기간을 가져와야 합니다. 함수에 삽입하는 방법, 이틀 연속으로 고생하고 있습니다, 알려주세요)))!
코드:
입력 열거형 timeFrame {
시간_1 = 60,
시간_4 = 240,
Day_1 = 1440
주_1 = 10080
};
iADX(currencySelect, 여기에 선택한 데이터 삽입!, ADXparam, PRICE_CLOSE , MODE_MINUSDI,2)
감사하다!
포럼에 코드를 올바르게 붙여넣으십시오.
다음은 열거형을 사용하는 예제 스크립트입니다.
포럼에 코드를 올바르게 붙여넣으십시오.
다음은 열거형을 사용하는 예제 스크립트입니다.
고맙습니다!
하지만 MQ4에 텍스트 키가 있는 연관 배열과 같은 구성이 있는지 알려주세요. 예: Array["Here is the key!"]?
고맙습니다!
하지만 MQ4에 텍스트 키가 있는 연관 배열과 같은 구성이 있는지 알려주세요. 예: Array["Here is the key!"]?
귀하의 예에서 키는 숫자이며 문자열을 키로 사용하는 것을 의미했습니다.
안녕하세요!
MQL EA 코드에서 열린 거래와 이미 종료된 거래에 대한 정보를 얻는 방법을 알려주실 수 있습니까? 마지막으로 최소 1개.
그리고 이동 평균 의 마지막 n개 값(더 나은 가중치 또는 지수)이 있는 배열을 반환하는 내장 함수나 라이브러리가 있습니까?
안녕하세요!
MQL EA 코드에서 열린 거래와 이미 종료된 거래에 대한 정보를 얻는 방법을 알려주실 수 있습니까? 마지막으로 최소 1개.
그리고 이동 평균 의 마지막 n개 값(더 나은 가중치 또는 지수)이 있는 배열을 반환하는 내장 함수나 라이브러리가 있습니까?