tp=TakeProfit; // В переменную tp заносится значение переменной TakeProfit
if(tp>TakeProfit) // А тут они сравниваются. А с чего им быть разными, если только что уравняли?
{
TakeProfit+=tp;
}
我已经删除了最后三根琴弦。它翻译的很干净。我更进一步...
//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
if(Digits == 3 || Digits == 5) // После этой строки нужны фигурные скобки.
TakeProfit *= 10; // иначе эта строка будет выполняться по условию
// а следующие строки будут выполняться всегда
Step *= 10;
TrailingStep *= 10;
TrailingStop *= 10;
Slippage *= 10;
return(INIT_SUCCEEDED);
}
//+-------------------------------------------------------+//| Демонстрация назначения фигурных скобок PROBA.mq4|//+-------------------------------------------------------+#property strictvoidOnStart()
{
// Без фигурных скобокif(2==5)
Alert("Это сообщение будет пропущено");
Alert("Без фигурных скобок это сообщается, хотя по логике зря");
Alert("-------------------------------");
Alert("А вот со скобками - полный молчок");
if(2==5)
{
Alert("Это сообщение будет пропущено");
Alert("Со скобками это тоже пропускается");
}
}
下面是结果
这个函数被删除了--没有对它的调用,其主体是空的。
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
if(timeprev == Time[0]) return; // сравнить время начала последнего бара с временем обработанного бара. Если равны, то выход
timeprev = Time[0]; // Запомнить время начала следующего бара На часовом и далее это будет слабо
Aleksandr Verkhozin: 你好,我最近才开始学习Mql4。如果我在错误的地方问了你一个问题,请把我引到正确的主题。我的问题如下:如何与建立各种区域、矩形等的指标合作。我可能会对线条的交叉或价格的高低进行编程,例如MA。)我在底部附上了一个指标,缓冲区是四个,有八个类型的区域。所以我搞不清楚如何编码打破或突破这些区域。
好吧,我会尽力多做一点事情来教育你。
我在发送时将称呼你为 "你"。我有一张指针的快照...
请告诉我,在同一个刻度上调用同一个函数5次,不觉得不妥吗?但这是一半的麻烦。这个函数会浏览所有的订单。而这一切在一次勾选中进行了5次......而我算上4个这样的功能。我们不能硬着头皮去想如何在一个循环中再容纳3个函数来搜索所有的订单。
下面是其中的两个。
这就是
它甚至还没有接近拖后腿。为了理解这一点,我们需要清楚地了解尾随的定义。我不能逐字记忆,但大约是 "跟随价格移动止损位,以减少可能的损失或增加 "保证 "利润。
而这
当你运行专家顾问时,它看起来像什么?可能是四条线...是否需要它们?
今天的最后一件事:你不必在你的头脑中建立一个图书馆。有文件并知道如何使用它就足够了。我仍然记不住iMA(_Symbol, _Period, ,,,,,)的所有参数,如果不研究文件,我就无法进一步了解。因此,几乎所有的功能。幸运的是,他们不久前制作了工具提示,这并没有什么帮助。我不是要记住如何写这些或那些枚举。所以你必须每次都看一下文件。
阿列克谢,谢谢你提供的信息。是的,我承认这段代码不是最佳的,我只是不是一个程序员,我不知道你所描述的微妙之处。我根本不明白这样的细微差别,我不明白如何优化这一切,也许我以后会这样做,如果我将继续前进。现在我清楚地知道,如果我开始优化,我只会破坏一切。我在我的网站上看到了其他EA的代码--那里有太多的东西了!- 可以肯定的是,如果你是一个专业的编码员,也许他的代码对终端的要求比我的要低,但现在我不能考虑你的意见,因为我真的不了解这些编程优化的细微差别。如果你在代码中删除一些对函数的调用--可以肯定的是,专家顾问会在那里开始混乱,并在没有必要的时候打开订单。我在那里编码,测试--没有出错或者出错,我就纠正,结果最后的代码变成了这样,我没有时间去优化,你明白我的知识包袱。
至于追踪--最重要的是它能追踪到利润,在目前的发展阶段,我对它感到满意))))。可以肯定的是,新旧尾随代码的尾随是一样的,交易的数量 也是一样的--当然,我已经得出结论,尾随是有效的,但如何在这个尾随有效的环境中正确地做,没有人告诉我,我也没有想法--我所有的代码都是乐高构造器--也就是说,我根据视频教程的材料组装的。当然,有一点是我自己的--实际上是专家顾问本身的算法,而整个代码和功能不是我的发明,而是来自TradeLikeaPro的视频教程,我完全按照类比和我的需要 "编辑 "了代码--用于我的算法。最后,我得到了我所拥有的。
看了看存款图--有了兴趣,下载了第一个版本。把它复制到MetaEdit中。我有两个警告。首先,我把int timeprev=0;替换为datetime timeprev=0;来消除它,因为这个变量包含日期。第二个表示在
我已经删除了最后三根琴弦。它翻译的很干净。我更进一步...
已经改变了(为了说明问题,我附上了脚本--运行它,它会解释),所以
下面是结果这个函数被删除了--没有对它的调用,其主体是空的。
我试着运行它,看到了。
它是
我只在用相同的工具和滑移量在两个图表上运行EA时改变了它 - 为什么要改变这个参数?然后我想了想,把参数增加了10倍。我还删除了OnInit这个函数。 毕竟,我只使用五位数的代码。为什么? 因为四位数的差价是3分,所以是30分。而五位数的价差只有12。
它变得更加清晰。
我修剪了页眉的顶部。这就是我离开的原因。
这一行就在这里。
把它移到了索赔处。它是这样的。
op=CalculateProfit(); if (op>=tp) { CloseAll(); }
然后,我扔掉了开头对操作变量的描述,用以下内容取代了它
if (CalculateProfit()>=tp) CloseAll();
在OnTick函数的开头,有几行字。这是为了确保每个条形图只进行一次处理,而不是每个刻度都进行处理。
然后计算MA。这一点必须详细研究。为了这个目的,我做了一个脚本并显示了结果
我们可以看到,第四个MaShift参数和最后一个参数是相加的,也就是说,条数=它们的总和。它从第2小节开始,从结尾的第三小节开始,采取了MA。
我将进一步研究它。有兴趣吗?
...
我将继续寻找。有兴趣吗?
你一直在提这个问题吗?
已经够了--人们为那些有兴趣的人关注这个话题,这就浪费了。
如果你想让一个人回答你,把他们叫到线上。像这样。@STARIJ.但你不必通过编辑你的最后一个帖子来不断提起这个话题。
这意味着有人要倒霉了。再一次。这是一个脚本,不是一个专家顾问或指标
想通了--显然终端没有足够的内存--关闭了几个图表就成功了。
谢谢你--的确,计算发生了。
如果变量不是int类型,而是bool,该怎么做?
你好,请你告诉我。
1 - 是否只能作为自然人注册,还是也可以作为法人注册,是否有任何限制和条件
2 - 是否有任何与社交网络的同步,以拥有一个单一的账户(用户名和密码)。
3 - 我还看到一个功能,"在你的页面上放置一个小部件,分享信号" - 我们是在谈论网站还是其他东西
看了看存款图--有了兴趣,下载了第一个版本。把它复制到MetaEdit中。我有两个警告。首先,我把int timeprev=0;替换为datetime timeprev=0;来消除它,因为这个变量包含日期。第二条指向
响应
也许,这与视频课程中的TP是int类型的事实有关,但我已经将其转换为double,因此int timeprev仍然是原样。好的,我会解决这个问题。 但它对EA的运行有什么影响?事实上,这些条形图和时间与视频教程中的TrailingStop函数有关,但由于我用自己的函数取代了这个函数,它只是作为源代码的遗迹保留下来,我的追踪止损实际上并不是基于条形图时间。
我已经删除了最后三行。它翻译的很干净。我更进一步...
我把它改成了这样(为了说明问题,我附上了一个脚本--运行它,它就会解释)。
下面是结果
*答案。
这段代码到哪里去了?
return(INIT_SUCCEEDED); }
也许应该是这样的?
空白的OnInit()
{
如果(Digits == 3 || Digits == 5)
{
步骤*=10。
后续步骤*=10。
尾数止损*=10。
滑移*=10。
}
return(INIT_SUCCEED)。
}
但你为什么要把TakeProfit变成int类型? 这意味着它将是以点为单位的利润,而CalculateProfit()函数是双倍类型的,所以我把TakeProfit变成相同的类型,使它们保持一致。
我删除了这个函数--没有对它的调用,它的主体是空的
响应
在代码中,有一个void CloseAll()函数。 我以为它与这个函数有某种关系
响应
好吧,让我们把它删除。
试着运行它,看到了。
它是
通过修改--好吧,只是添加了评论,并从Magic中删除了extern。
响应
是的,也许extern是多余的,因为我从来没有改变过它,Slippage也没有改变过,这都是来自视频教程的源代码。
- 我们只有在用相同的工具和滑点在两个图表上运行EA时才会改变它 - 为什么要改变这个参数?然后我想了想,把参数增加了10倍。我还删除了OnInit这个函数。 毕竟,我只使用五位数的代码。为什么? 因为四位数的差价是3分,所以是30分。在五位数的差价上,它只有12。
答案是 。
这是EA的默认设置,可以在所有货币上工作。我将保留Oninit()。
它变得更加清晰。
我已经修剪了顶部的页眉。这是我留下的东西。
回复
这个页眉是由默认的编辑器制作的。我还是保持原样,以防在经纪人那里或在终端因为没有这些线条而不能通过的事情。
我已经把这一行移到了
挪到了索赔处。事情是这样的
然后,我删除了开头对变量op的描述,并将其替换为
响应
这很符合逻辑。
在OnTick函数的开头,有几行字。这是为了确保每个条形图只进行一次处理,而不是每个刻度都进行处理。
然后计算MA。这一点必须详细研究。为此,我做了一个脚本并输出结果。
你可以看到第四个参数MaShift和最后一个参数是相加的,也就是说,条数=它们的总和。我们从第2小节的MA开始,第三小节结束。
响应
由于我已经改变了尾数--日期--时间,所以我认为移动平均数与此无关。这是源代码的遗迹,我曾经试图通过3个(三个)开放订单中的最后一个来拖动。事情是这样的,如果市场按STep的值向错误的方向发展,EA就会开出一个反单,然后如果市场继续向相反的方向发展,就会增加第二个位置的类型的第三单。或者反过来说,如果价格返回了方向,那么第三个订单将以第一个订单类型(买入或卖出)打开。 在那里,使用CalculateProfit()函数对三个订单进行追踪;然而,如果第一个订单成功打开,并且价格如期移动,在这种情况下,在酒吧上的追踪将使用视频教程中的datetime进行 - 我重复,即使在1个订单上使用calculateprofit()函数追踪。
我将进一步寻找。有兴趣吗?
响应
是的,我对拖网有一些问题。它似乎可以跟踪,但我不希望任何人了解我用它做了什么。Trailing()函数没有条形和日期时间 - 它与Trailing()一起工作。
MA周期约为200,但关键是它是一个可调整的值。而关键参数Value似乎不见了--我已经在README文件描述中解释了其含义。
谢谢你为这一切付出的努力。事 实上,专家顾问并不是真的那么好,机械的我想说。但基本上,如果你设置了它,并偶尔监测它的工作,它可能是相当好的。时间会证明一切。可能,他们可以赚到一些钱,但他们会连眼睛都不眨一下就破产,也不会发短信。 我甚至没有去管它,尽管我的想法是,如果缩水超过30%的存款已经发生,就发短信--这意味着已经有3个订单被打开,市场开始逆向运动,在这种情况下,它有石蜡的味道。所有其他情况都由专家顾问解决,如果它是根据交易工具图表的行为历史进行调整。
我暂时在记事本中对代码进行了推荐(但不是全部)修改。请检查我是否已经纠正了代码?
我支持优化,只是我没有考虑到你删除oninit的时刻--我需要它能够在所有货币上测试和工作))))。
你好,我最近才开始学习Mql4。如果我在错误的地方问了你一个问题,请把我引到正确的主题。我的问题如下:如何与建立各种区域、矩形等的指标合作。我可能会对线条的交叉或价格的高低进行编程,例如MA。)我在底部附上了一个指标,缓冲区是四个,有八个类型的区域。所以我搞不清楚如何编码打破或突破这些区域。
如果你想了解更多关于程序员的信息,你应该通过实例查看并使用彩色按钮。你可能会问:你是如何得到mql4代码作为编程范例的,你又是如何知道该如何处理它的?)也许你会进步。
geratdc:
...
是的,我有一些关于拖网的问题。它似乎在拖动,但没人想知道我对它做了什么。
...
你可能需要从RuTracker上的TradeLikeApro下载mql4编程视频教程。我认为mql4的基本原则是,你不需要做任何复杂的事情,你根本不需要做任何事情)。也许你会进步。
看了关于使用外部指示器的视频,写了一点代码来查看测试器中缓冲器的值。
空白的OnTick()
{
double Buf1=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",0,1)。
double Buf2=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",1,1);
double Buf3=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",2,1)。
double Buf4=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",3,1)。
Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);
}
这些区域在可视化模式下出现和消失。但无论如何,缓冲区的值总是为零。是否没有办法在代码中正式规定这些区域?
也许除了iCustom之外,还有一个函数适合这种指标?也许有人写过有这种指标的猫头鹰?