//+------------------------------------------------------------------+//| 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価格でポジションをオープンする、というものです。すなわち、前回のトレードで買いが入っていて、それがプラスになった(安く買って高く決済した)場合、新たに買いのポジションを建てる...ということです。それは一般論としてです :)問題は、最後のトランザクションの種類が何であったかの情報を得ることができないことであり、その結果、それが開いたとどのような価格でそれが閉じ...
以下は、私が書いたコードです。
よろしくお願いします :)
私はずいぶん前に紙の本から離れましたし、電子版の海賊版も離れました。慣れてしまったんです。
美しく生きることはできない。
新人に「何を読めばいいのか」と聞かれても、自分が持っているものを覚えていないんです。
皆さん、ごきげんよう。
EAウィンドウの入力フィールドから、ユーザーがドロップダウン・リストから選択したタイムフレームを取得する必要があります。機能での使い方、2日連続で悩んでいます、アドバイスお願いします)!
コード
input enum timeFrame {
時間_1=60。
時間_4=240。
Day_1 = 1440。
Week_1 = 10080!
};
iADX(currencySelect, THIS IS HOW TO INSTALL SELECTED DATA!, ADXparam,PRICE_CLOSE, MODE_MINUSDI,2)。
ありがとうございました。
フォーラムでコードを正しく挿入する
以下は、この列挙を適用したスクリプトのサンプルです。
フォーラムでコードを正しく挿入する
以下は、あなたのリストを使ったスクリプトのサンプルです。
ありがとうございました。
また、MQ4では、Array["Here is key!"]のように、テキストキーを持つ連想配列のような構造はあるのでしょうか?
ありがとうございました。
また、MQ4にはテキストキーを持つ連想配列のような構造、例えばArray["Here is the key!"]があるかどうか教えてください。
あなたの例では、キーは数字ですが、私は文字列をキーとして使用することを意味しました。
こんにちは。
MQL EAコードでオープンとクローズのトレードに関する情報(どの価格でオープンしたか、TPとSLは何だったか)を取得する方法を教えてください。 少なくとも過去1年間は。
また、移動平均(できれば加重または指数)の最後の値n個を配列で返す組み込み関数やライブラリはありますか?
こんにちは。
MQL EAコードでオープンとクローズのトレードに関する情報(どの価格でオープンしたか、TPとSLは何だったか)を取得する方法を教えてください。 少なくとも過去1年間は。
また、移動平均(できれば加重または指数)の最後の値n個を配列で返す組み込み関数やライブラリはありますか?