datetime dayTime;
double dayBalance;
// Дальше в функции OnTick()if(dayTime != iTime(_Symbol, PERIOD_D1, 0);
{
dayBalance = AccountInfoDouble(ACCOUNT_BALANCE));
dayTime = iTime(_Symbol, PERIOD_D1, 0);
}
// Дальше текущий баланс можно сравнивать с балансом на начало дня…// В начале следующего дня в переменной dayBalance будет другое значение баланса…
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 26.02.2008 |//| Описание : Возвращает реальный номер бара от начала суток. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента (NULL или "" - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| dt - дата и время открытия бара ( 0 - текущее время) |//+----------------------------------------------------------------------------+int iBarOfDayReal(string sy="", int tf=0, datetime dt=0) {
if (sy=="" || sy=="0") sy=Symbol();
if (tf<=0) tf=Period();
if (dt<=0) dt=TimeCurrent();
if (tf>PERIOD_D1) {
Print("iBarOfDayReal(): Таймфрейм должен быть меньше или равен D1");
return(0);
}
int cd=TimeDay(dt); // текущий день месяцаint nb=iBarShift(sy, tf, dt, False); // номер текущего бараint bd=0; // номер бара от начала сутокwhile(TimeDay(iTime(sy, tf, nb))==cd) {
nb++;
bd++;
}
return(bd);
}
谢谢你的回答,这是个不错的解决方案,但就我的想法而言,它的工作方式有点不正确,因为余额是浮动的,可能它不能立即做到这一点,在某些情况下,我的订单由于某种原因开始以负值关闭。但增长是应该的,但与这些减法的缩减也在增加。我放弃了一切,决定手动设置回撤限制,因此我必须每天调整它们。
谢谢你的回答,这是个不错的解决方案,但就我的想法而言,它的工作方式有点不正确, 因为余额是浮动的,可能它不能立即做到这一点,在某些情况下,我的订单由于某种原因开始以负值关闭。但增长是应该的,但与这些减法的缩减也在增加。我已经决定放弃,手动设置交易限额,并且要每天调整。
该功能工作正常。
试试这样的方式
并在订单关闭功能中添加余额更新
捕捉当天的变化,并计算出那一刻的余额值。
他们说 "获得正确的指标 "不是没有道理的--这不是几行代码就能解决的。 这是一个相当有容量的算法。
捕捉日期变化很容易,"已知的日数不等于前一天的日数",但它比较复杂
Alg."计算D时间的余额"(不包括提款/补款和一些关于掉期和佣金的错误)
余额:=当前账户余额。这就是AccountBalance()。
对于历史上所有关闭的市场订单。
如果收盘时间在D和当前之间,余额-=OrderProfit()+OrderSwap()+OrderCommision()。
枚举完成后, 余额为所需值......
但是,佣金是在开盘时收取的(即影响到平衡线),我们在收盘时将其考虑在内,掉期是在换日时进行的,我们在收盘时才会再次将其考虑在内。
而在大深度D的情况下,有可能在超额完成任务的情况下无法获得所有需要的订单
谢谢你的回答,这是个不错的解决方案,但就我的想法而言,它的工作方式有点不正确,因为余额是浮动的,可能它不能立即做到这一点,在某些情况下,我的订单由于某种原因开始以负值关闭。但增长是应该的,但与这些减法的缩减也在增加。我放弃了,决定手动设置交易限额。 我将不得不每天调整它。
我已经在你的建议和意见中迷失了方向,所以也许我的建议完全是题外话,但对不起......。
我明白我需要在一天的开始时固定余额,并为这一天计算利润/亏损,根据这些我需要做出是否继续交易的决定......
因此,这里的决定是
如果专家顾问将在白天重新启动,你应该考虑计算今天订单的利润/亏损,同时考虑掉期和佣金,并在OnInit()中计算一天开始的余额。
我相信Makar的能力,他可以在代码中显示所有这些......。
你好。你能告诉我如何从一天的开始确定当前的条数吗?
我如何确定从当天开始的当前条形图的数量?
谢谢你。
你好。你能告诉我如何从一天的开始确定当前的条数吗?
我如何从一天的开始确定当前的条数?
谢谢你。
这是当前栏位,如果上一个栏位关闭,则为-0.5
是当前的条形图,如果上一个条形图关闭,则为-0.5
谢谢你。我会试一试的。
这是当前的酒吧,如果最后一次关闭,则为-0.5
它不会对分钟和异物起作用。
条数 !"= 数目的数量
每次都是跳过小节,15分钟内可能有12分钟的小节。
最好使用iBarShift()。
最好使用内置的iBarShift()。
我不知道如何(
我不知道如何(
职能