代码拉取完成,页面将自动刷新
//+------------------------------------------------------------------+
//| ExpertRSI20240329.mq5 |
//| panbobo |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include "./components/GlobalVariables.mqh"
#include "./components/Indicators.mqh"
#include "MySignal.mqh"
#include "MyExpert.mqh"
#include <Expert\Trailing\TrailingNone.mqh>
#include <Expert\Money\MoneyNone.mqh>
input string Inp_Expert_Title = "ExpertRSI";
int Expert_MagicNumber = 10086;
bool Expert_EveryTick = false;
// 所有输入
bool is_need_db = true; // 是否需要数据库,默认关闭
bool is_delay_signal = true; // 是否使用延迟信号,不立即开单,配合 k 线模式使用
bool is_signal_rsi = true; // 是否采用 rsi 作为信号,默认开启
bool is_signal_lrsi = false; // 是否采用 lrsi 作为信号,默认关闭
bool is_filter_candle_pattern = true; // 是否采用 k 线模式校验过滤
bool is_filter_bollinger_threshold = true; // 是否采用 bollinger 阈值过滤
bool is_filter_atr_peak = false; // 是否根据 atr 过滤
bool is_filter_rsi_breakout = true; // 两个小时是否有对侧 rsi
bool is_filter_institution = true; // 是否判断半个小时是否有机构在场
double filter_bollinger_threshold_value = 120; // bollinger 阈值
int filter_atr_peak_value = 3; // 需要多少条 k 的 atr 递增
CMyExpert ExtExpert;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnInit()
{
//--- 十秒钟执行一次
EventSetTimer(10);
ExtExpert.OnTimerProcess(true);
//--- Initializing expert
// 调用初始化全局变量的函数,并传入初始值
initGlobalVariables(
is_need_db, // init_need_db
is_delay_signal, // init_delay_signal
is_signal_rsi, // init_signal_rsi
is_signal_lrsi, // init_signal_lrsi
is_filter_candle_pattern, // init_filter_candle_pattern
is_filter_bollinger_threshold, // init_filter_bollinger_threshold
is_filter_atr_peak, // init_filter_atr_peak
is_filter_rsi_breakout,
is_filter_institution,
filter_bollinger_threshold_value,
filter_atr_peak_value
);
if(!ExtExpert.Init(Symbol(), Period(), Expert_EveryTick, Expert_MagicNumber))
{
//--- failed
printf(__FUNCTION__ + ": error initializing expert");
ExtExpert.Deinit();
return INIT_FAILED;
}
MySignal *mySignal = new MySignal;
if(mySignal == NULL)
{
//--- failed
printf(__FUNCTION__ + ": error creating RSI signal");
ExtExpert.Deinit();
return INIT_FAILED;
}
if(!ExtExpert.InitSignal(mySignal))
{
//--- failed
printf(__FUNCTION__ + ": error initializing RSI signal");
ExtExpert.Deinit();
return INIT_FAILED;
}
if(!mySignal.ValidationSettings())
{
//--- failed
printf(__FUNCTION__ + ": error RSI signal parameters");
ExtExpert.Deinit();
return INIT_FAILED;
}
CTrailingNone *trailing = new CTrailingNone;
if(trailing == NULL)
{
//--- failed
printf(__FUNCTION__ + ": error creating trailing");
ExtExpert.Deinit();
return INIT_FAILED;
}
if(!ExtExpert.InitTrailing(trailing))
{
//--- failed
printf(__FUNCTION__ + ": error initializing trailing");
ExtExpert.Deinit();
return INIT_FAILED;
}
CMoneyNone *money = new CMoneyNone;
if(money == NULL)
{
//--- failed
printf(__FUNCTION__ + ": error creating money");
ExtExpert.Deinit();
return INIT_FAILED;
}
if(!ExtExpert.InitMoney(money))
{
//--- failed
printf(__FUNCTION__ + ": error initializing money");
ExtExpert.Deinit();
return INIT_FAILED;
}
if(!ExtExpert.InitIndicators())
{
//--- failed
printf(__FUNCTION__ + ": error initializing indicators");
ExtExpert.Deinit();
return INIT_FAILED;
}
// 初始化成功,返回成功标志。
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
ExtExpert.Deinit();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// printf("lrsi: %f, rsi: %f, Bollinger Width: %f, ATR: %f, Stoch: %f", getLRSI(), getRSI(), getBollingerWidth(), getAtr(), getStoch());
//---
ExtExpert.OnTick();
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//--- 每秒执行一次
ExtExpert.OnTimer();
}
//+------------------------------------------------------------------+
//| Trade function |
//+------------------------------------------------------------------+
void OnTrade()
{
//---
ExtExpert.OnTrade();
}
//+------------------------------------------------------------------+
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction& trans,
const MqlTradeRequest& request,
const MqlTradeResult& result)
{
//---
}
//+------------------------------------------------------------------+
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//---
}
//+------------------------------------------------------------------+
//| BookEvent function |
//+------------------------------------------------------------------+
void OnBookEvent(const string &symbol)
{
//---
}
//+------------------------------------------------------------------+
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。