[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 26

 
Code:


谢谢你的回答,我将回答你的问题。

这一特点正是该指标背后的整个想法。同时,这也是一种MQL的练习。我已经想好了一个任务,并凭直觉理解它在一种语言中的实现并不十分困难。我坐下来试试。

所以,这个特点的实质是,我把两个单向量的某个固定的理论水平与实际水平进行比较。也就是说,如果两个量的总和与实际 "开仓-平仓 "区间的实际比率高于指定的理论比率,我就会以计算出的理论结果和实际结果之间的差额的形式,给实际的第二个量增加一个 "奖励"。如果实际水平比理论水平低,我就从第二根柱子的体积中减去相同的差异。我可以解释清楚吗?

为了以防万一,我要说的是,在揭示这一特点时,你把括号放错了,可能是太匆忙。

此外,在我看来,你认为与我等同的那些字符串将导致除以零。我现在就去看看。

这很清楚。但不清楚2(两个量之间的平均值)和变量UP12中计算的内容有什么关系。毕竟,两者的尺寸是不同的。分母中的次数和价格。毕竟,在学校的时候,我们就被告知,米和公斤是不能相加的。:))))


没错,这是不对的!:))))将公式作为分数是一回事,但将所有东西放在一行上,不了解如何......又是另一回事。那是不注意,不是匆忙......

我还错误地优化了代码。这又是一个数学上的错误。我忘了放在括号里。

   double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);
 
Roman.:

你的观点一点也不对...对错误的交易标准,问题是关于STOHAS-TEAM...:-Р

问题是这样的。

为生活 出谋划策。

如果条件1 得到满足,那么。
-检查是否有未结的卖出订单
-如果有的话 -关闭它们
-检查账户上是否有资金
-打开购买订单

同样的,如果 条件2 得到满足,那么
-检查是否有任何已开启的买入订单
-如果有的话,关闭它们
检查是否有任何买入的订单 - 如果有,就关闭它们
-打开一个卖出订单
+ 错误分析(不是主要的,但有可能)。

这与《HOSTAGE》有什么关系?:))))

所有必要的检查已经完成,交易信号已经或尚未形成。

 
demlin:

大家好!

感谢这个分支的专家(特别是Roman)的宝贵帮助,我已经成功地做了一个简单的专家顾问,它在测试器上显示+。问题:如何确定它是否可用于真实交易?是否有任何标准?


是的,标准是什么,你在 "基本 "的东西上工作(为真正的磨砺 - 控制断开和切换到一个额外的线,我不考虑),在智能处理可能的错误的形式与采用适当的组织 决定专家的进一步工作,然后是强制性的演示,然后是微观的真实......如果你对结果感到满意--"疯了"......:-))首 先,从教程 中拆开EA的错误处理,在下单前不要忘记对交易操作的要求和限制 进行必要的检查,在搜索类似:错误处理 site:mql4.com,准备EA的真实 site:mql4.com,我(部分:-R) 有一个专家做这样的发现。

// После старта
if (!IsTradeAllowed() || IsTradeContextBusy() || !IsConnected()) return; // если торговля невозможна, то выходим

检查使用的顺序选择

                if (ticket>0)                                               // Если позиция открылась
                    {
                       while(OrderSelect(ticket,SELECT_BY_TICKET)==false) Sleep(1000);     // Если ордер выбран
                         double OpenPrice=OrderOpenPrice();
                         ...  
                           

在开始时

color ColorBuy = Blue, ColorSell = Red;
bool UseSound = true;
string alert.wav;
color clr, ClrClose = Gray;
int Level_new; 
double price;
bool result, Buy_signal=false, Sell_signal=false;
int  orderIndex;
bool IsExpertFailed = false;
bool IsExpertStopped = false;
double lots;                       // вспомогательная переменная для расчета нового размера лота 
double Lots_New;                   // Количество лотов для новых ордеров
int ticket;                        // Номер ордера
double orderLots;                  // Lots   
double orderProfit;                // Profit
double Price;                      // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double  TP;                        // Значение TakeProfit ордера
static datetime prevtime = 0;       // по ценам открытия

int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
      
    if (!IsTesting())
       {
         if (IsExpertEnabled())  Comment("Советник запустится следующим тиком");       
           else  Comment("Отжата кнопка \"Разрешить запуск советников\"");
      
       }
    ...
   
   return (0);
}

这就是所有,IMHO,对于初学者来说;我们可以继续下去......。

在任何情况下,"经理 "的控制是必要的......。 :-R 为了不使丢失的存款 痛苦不堪,...

 

MaxZ:


问题是这样的。

这与STOCHASTAGE有什么关系?:))))

所有必要的检查已经完成,交易信号已经形成或没有。


有一个直接的问题。

"这都是在当前的货币对上。
int start()
{
双重M_0, M_1; // 在0和1bar上的MAIN值
S_0, S_1; // 0和1bar上的信号值
//--------------------------------------------------------------------
// 调用技术显示的函数。
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0);//0 bar
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1条
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 bar
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1条
//--------------------------------------------------------------------

if( M_1 < S_1 && M_0 >= S_0 ) // 条件1:绿色从底部穿过红色。

if( M_1 > S_1 && M_0 <= S_0 ) // 条件2:绿色从上面穿过红色

//--------------------------------------------------------------------
return; //从start()中退出。
}"

基本上,不管是什么,IMHO,作者被提到了,他都会想办法解决......。:-Р

 

Roman.:


在开始的时候。

...
int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
...

IsExpertStopped变量的目的是什么?而事实证明,日志中的每一个刻度都会显示" 必须允许专家顾问进行交易"的信息......。

 
MaxZ:

IsExpertStopped变量的目的是什么?而事实证明,日志中的每一个刻度都会有一个信息 "必须允许专家顾问进行交易"...

这就是我的工作。


F1按上
IsTradeAllowed()

你会发现...:-Р

具体来说就是"

如果EA被允许交易并且线程是自由的",那么就交易,否则IsExpertStopped = EA停止,等待交易许可...

 
Roman.:

F1按上

你会发现...:-Р

即:"

如果EA被允许进行交易,并且执行交易的线程是空闲的",则进行交易,否则IsExpertStopped = EA停止,等待交易许可...

明白了...我今天完全心不在焉。我看到init()就想到了start()!:)))))

 
MaxZ:

这很清楚。但不清楚2(两个量之间的平均值)和变量UP12中计算的内容有什么关系。毕竟,两者的尺寸是不同的。分母中的次数和价格。毕竟,在学校的时候,我们就被告知,米和公斤是不能相加的。:))))


这是正确的,这是不对的!:))))把公式当做分数是一回事,把所有的东西都放在一条线上,不了解如何......是另一回事。那是不注意,不是匆忙......

我还错误地优化了代码。这又是一个数学上的错误。我忘记使用括号了。


MaxZ,快点,哦,快点:))的结论!

我不添加公里数和公斤数。一个现实生活中的例子。今天的欧元兑美元,5分钟。刚刚戳了一下图表,那里有2根连续上升的蜡烛

vback1=703,dVolume=696。(vback1+dVolume)/2=699,5.

在同一个烛台上(Close[i]-Open[i+1] )*1000=(1.42911-1.42549)*1000=3.62

(vback1+dVolume)/3.62=386.5

总计:696+699.5-386.5=1009。这就是应该画出来的东西。而1009到底是什么,在这个地方的指标显示。以此类推。

另一件事是,我自己在这里计算了这个例子,发现根据代码的公式,我在前面的帖子中描述的情况并没有发生。事实上,它变成了一种不同的意识形态,一种自我调节。只要vrealUP12参数的减值不超过dVolume+vteor12的总和,最后的体积就会有一个增加。或者必须输入额外的参数来计算ExtVolumesBuffer[i]。

而在行

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

我只是把它调回

double vrealUP12=(dVolume+vback1)/UP12;

以免延长。

 
Code:


MaxZ,快点,哦,快点:)))你的结论!

我没有把公里数和公斤数加起来。一个现实生活中的例子。今天的欧元兑美元,5分钟。刚刚戳了一下图表,那里有2根连续上升的蜡烛。

糟糕......。你确实是在做加法,而且是怎么做的!:))

变量vteor12的尺寸是Volumes(即我们的米)。

 vteor12=(dVolume+vback1)/2;

变量UP12有一些货币对的点值

UP12=(Close[i]-Open[i+1])*1000

变量vrealUP12的维度是体积与点数的比率(也就是我们的公斤数)。

vrealUP12=(dVolume+vback1)/UP12;

而你最终会计算出你的特征,也就是米和公斤的总和,这就是它的意义所在!;D

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;


除非2不是理论上每两根柱子的价格应该通过的20个点!:))但这已经是一些胡言乱语了...


代码:


而在行

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

我把它改回为

double vrealUP12=(dVolume+vback1)/UP12;

以免拉长它。

延长有时是有用的。它节省了计算机资源!:)))你为什么需要这个额外的变量?

 
MaxZ:

哦,伙计...你做到了,而且是如何做到的!?:))

变量vteor12的尺寸是Volumes(即我们的米)。

变量UP12的维度为价格。

变量vrealUP12是以体积和价格来衡量的(这是我们的公斤数)。

最后你计算出你的特征,也就是米和公斤的总和,这就是它的意义所在!;D


好吧,让我们尝试用另一种方式来看待它。

vteor12可以写成(dVolume+vback1)/k1(系数1)。

vrealUP12可以写成(dVolume+vback1)/k2(系数2)。

正如我试图描述的指标意识形态,它包括一些理论和实际水平的比较。为了获得这些水平,我将同一数值(dVolume+vback1)与一些理论值(k1)和实际值(k2)进行比较(即划分)。很明显,K1我只是在编造,把事情放在正确的名称里。或者,如果你愿意的话,做一个假设。现在,这必须与一些东西进行比较。在这种情况下,没有什么比图表本身更客观和真实。因此,我把开盘和收盘的差异,作为特定时间段的底线。而这里唯一的任务是把它带到相同的数字,这就是为什么它要乘以1000。

试着在计算器上计算几个不同的相邻烛台的变体,根据这个非常简单的公式,你可能会对各种结果感到惊讶。

而在学校的逻辑方面,你是对的。我加了量+量/价,你在学校不能这样做。:))