初学者的问题 MQL5 MT5 MetaTrader 5 - 页 837

 
Aleksey Vyazmikin:

你在整个故事中寻找补给吗?关于股票缩水,对我来说是这样的

这个人不需要关闭一切,他不需要在历史中寻找任何东西,他写道。

关于交易、自动交易系统和测试交易策略的论坛

初学者的问题 MQL5 MT5 MetaTrader 5

Denis Pershin, 2018.03.22 21:13

我存了500元,如果余额增加了10%,那么就提取这10%,前提是目前的提款不超过5%。这些输入是在函数中,它不能准确地计算出增长和下降。

而在这之后,从信息中可以看出。

if(_ldd < _dd) TesterWithdrawal(_dep-_bal); // Снимаем: нач.депозит - баланс }

测试者退出

Документация по MQL5: Общие функции / TesterWithdrawal
Документация по MQL5: Общие функции / TesterWithdrawal
  • www.mql5.com
Общие функции / TesterWithdrawal - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

这个人不需要关闭一切,他不需要在历史上查找任何东西,他写道。

好吧,作为一个后续的信息是多么的清晰。

测试者退出

我以为这个人需要在真实的基础上做出退出的决定,此前已经停止了交易...

嗯,不明白他想要什么。

 
Aleksey Vyazmikin:


这是正确的,在测试期间,我需要在余额上保留一笔钱,撤回增加的部分,机器人是没有再投资的,在马丁格尔的基础上进行网格交易,所以市场上不断有开放交易。

 
Denis Pershin:

好吧,我需要在测试期间保持一笔余额,提取增量,机器人没有再投资,并在马丁格尔上进行网格交易,所以市场上不断有开放交易。

好吧,无论如何,逻辑不会改变,记住最初的余额并监测增长和缩减,然后退出......你在代码上需要什么吗?

 
Aleksey Vyazmikin:

如果你能帮助我,请用代码帮助我。

// dep=нач.депозит, growth=прирост %, _dd=допустимая просадка %
void Withdraw(double _dep=500, double _growth=10, double _dd=5) {
  double _bal=AccountInfoDouble(ACCOUNT_BALANCE);
  double _eq=AccountInfoDouble(ACCOUNT_EQUITY);
  double _ldd="что сюда?";
  
   if(_ldd < _dd) TesterWithdrawal(_bal-dep); // Снимаем: баланс - нач.депозит
 }
 
Denis Pershin:

如果你不介意的话,请帮我写一下代码。

你必须把自由保证金考虑在内,而不是把股本考虑在内!

你可能会遇到这样的情况:缩减允许你从余额中提取利润,但其中涉及很大的保证金,提取后的缩减将大于你的5%。

我现在不能帮助你在代码中的公式,也许别人会连接并给你写一个代码,它不长,但你需要一点思考)
 
Denis Pershin:

如果你不介意的话,请帮我完成这个代码。

我不明白...你是否需要一个公式来计算余额中的资金百分比?

_ldd=100-_eq/_bal*100;
 
Denis Pershin:

如果你不介意的话,请帮我完成这段代码。

给你。这个逻辑是我建议的,如果有什么问题,我们会解决的。

//===============================================================================================
//--------------------------------- Снимает прибыль в тестере ----------------------------------+
//===============================================================================================
void Withdraw(double _dep=500, double _growth=10, double _dd=5) {
 double _now_bal=0,_now_mg=0,_now_pr=0,_surplus=0,_GR=0,_DR=0;
 _now_bal= AccountInfoDouble(ACCOUNT_BALANCE);
 _now_mg = AccountInfoDouble(ACCOUNT_MARGIN_FREE);
 _now_pr = _now_bal-_dep; // Сумма к снятию
 _surplus= _now_mg-_now_pr; // Считаем остаток после снятия
 _GR = (_now_bal-_dep)/_dep*100; // Прирост %
 _DR = (_surplus-_dep)/_dep*100; // Просадка %
 //Comment(DTS(_GR,2)," = ",DTS(_DR,2));
  if(_GR>_growth && _DR<_dd) TesterWithdrawal(_now_pr); // Снимаем
 }
 
Vitaly Muzichenko:


谢谢你,这正是我需要的)
 
Nilog:

只有在ex5中才有一个指标文件。

我可以用iCustom函数把它变成一个多时态的指标吗?所以它从其他时期的ex5中获取数值,并在当前的图表上画出它们?

这是有可能的。