新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 194 1...187188189190191192193194195196197198199200201...1953 新评论 Renat Akhtyamov 2017.05.06 19:45 #1931 谁知道--如果你关闭部分订单,它的魔术师或评论会不会消失? Artyom Trishkin 2017.05.06 19:50 #1932 Renat Akhtyamov: 谁知道--如果你关闭部分订单,它的魔力或评论就会消失?魔术将保留,订单票 将改变,评论将包含来自#xxxxxxxxxxx的父母订单票。父订单将有一个子订单票:to#xxxxxxxxxxx Renat Akhtyamov 2017.05.06 20:03 #1933 Artyom Trishkin:魔术将保留,订单票 将改变,评论将包含来自#xxxxxxxxxxx的父母订单票。父订单将有一个子订单票:to#xxxxxxxxxxx 好的。谢谢你! Alexey Viktorov 2017.05.07 06:53 #1934 geratdc: 是的,这个K也在顶帽的外部变量 中--也许是某个函数的返回值......。阿列克谢,你对我的问题能说些什么?我尝试在反向订单上附加追踪止损。你是否遇到过这样的问题?而为了回答这个问题的东西,你必须了解问题本身。而从这个geratdc:我需要帮助 - 我有3个止损单,但视频教程中的跟踪止损的例子:)只适用于非连接的订单,在我的情况下,它们是通过算法连接的,即止盈是由三个订单的总和计算的,如果我进入了一个趋势,则由一个订单计算。好吧,我已经想到了一些东西,但我的专家顾问并没有开始赚取更多的钱--它已经开始赚取相同数量的订单,但与我以前的没有跟踪的EA相比,我得到的交易量要少2-3倍。因此,我的追踪不是追踪,而是一些胡言乱语。我应该如何把它放在链接的订单上? 谁能给我一个主意?我恐怕想不出别的办法了。 这是我 "跟踪 "的结果--它以蓝色显示。附上1个测试的结果。那里到底有没有尾随止损?我不明白。为什么同一时期的利润没有增加?只有交易的数量 减少了2-3倍?我无法理解任何事情。最奇怪的是,"我发明了一些东西",但你是否了解你所发明的东西?而这是"我如何在链接的订单上做"。但接下来是"恐怕我想不出别的 办法了"。 [删除] 2017.05.07 09:13 #1935 Alexey Viktorov:而为了回答任何有关问题,你必须了解问题本身。而从这一点来看。我什么都听不懂。最奇怪的是"我已经想通 了",但你知道你想通了什么吗?然后是"我如何在联动权证上做到这 一点?"但接下来是"恐怕我想不出别的 办法了"。 根据我的理解,跟踪止损不能正确地应用于订单,所以我们应该非常注意这个函数CalculateProfit,即变量 "op",根据这个变量,如果所有3个订单的利润之和等于TakeProfit,订单就会被关闭,并尝试通过这个变量进行拖拽。我将努力在这个方向上想出一些办法。我理解与第三方abracadabra)))),这是很难处理的。 Alexey Viktorov 2017.05.07 10:08 #1936 geratdc: 根据我的理解,追踪止损不能正确地应用于订单,这就是为什么我们应该仔细看看这个函数CalculateProfit,特别是变量 "op",根据这个变量,如果所有3个订单的利润之和等于TakeProfit,订单将被关闭,并尝试通过这个变量追踪。我将努力在这个方向上想出一些办法。我理解,很难处理第三方的abracadabrasions)))。 为什么你不能应用它?有必要不要在别人的功能上附加或发明一些东西,而要写出自己的功能,让它们执行你想要的一切。可能是什么问题?无论有多少订单,都要计算出平均价格并从中拖动。当某些条件得到满足时,当通过循环中的所有订单时,在一个新的水平上重新安排它们的止损,这个水平是由一个方向上存在的所有订单的平均价格计算出来的。 [删除] 2017.05.07 21:12 #1937 //+------------------------------------------------------------------+ //| BLACKJACK&HOOKERS TrailX.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern double Lots = 0.01; extern double TakeProfit = 1; extern int Step = 1; extern double TrailXStep = 1; extern double TrailXStop = 1; extern int MaPeriod = 100; extern int MaShift = 1; extern int Magic = 123; extern int Slippage = 5; int timeprev=0; extern double price,op,cn,tp; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(Digits == 3 || Digits == 5) //TakeProfit *= 10; Step *= 10; //TrailXStep *= 10; //TrailXStop *= 10; Slippage *= 10; return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { if (timeprev == Time[0]) return; timeprev = Time[0]; double maprice=iMA(Symbol(),0,MaPeriod,MaShift,MODE_SMA,PRICE_CLOSE,1); op=CalculateProfit(); cn=CountTrades(); tp=TakeProfit; if (tp>TakeProfit) { TakeProfit+=tp; } if (cn==0 && CountBuy() + CountSell() == 0 && Ask > maprice) { if (OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue)<0) Print("Не удалось открыть ордер на покупку"); } if (cn==0 && CountBuy() + CountSell() == 0 && Bid < maprice) { if (OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red)<0) Print("Не удалось открыть ордер на продажу"); } if(cn==1 && CountBuy()==1) { price=FindLastBuyPrice(); if((price-Ask)>=Step*Point) { if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1) Print("Не удалось открыть ордер на продажу"); } } else if(cn==1 && CountSell()==1) { price=FindLastSellPrice(); if((Bid-price)>=Step*Point) { if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1) Print("Не удалось открыть ордер на покупку"); } } if(cn==2 && CountBuy()==1 && CountSell()==1) { price=FindLastSellPrice(); if((price-Bid)>=Step*Point) { if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1) Print("Не удалось открыть ордер на продажу"); } else price=FindLastSellPrice(); if((Bid-price)>=Step*Point) { if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1) Print("Не удалось открыть ордер на покупку"); } } else if(cn==2 && CountSell()==1 && CountBuy()==1) { price=FindLastBuyPrice(); if((Ask-price)>=Step*Point) { if(OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"",Magic,0,Blue)<1) Print("Не удалось открыть ордер на продажу"); } else price=FindLastBuyPrice(); if((price-Ask)>=Step*Point) { if(OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"",Magic,0,Red)<1) Print("Не удалось открыть ордер на покупку"); } } Trailing(); if (op>=tp) { CloseAll(); } } //--------------------------------------------------------------------------------------- void Trailing() { if (op > (TakeProfit+TrailXStep)) { tp=(TakeProfit+TrailXStep); } if (op > (TakeProfit+TrailXStep-TrailXStop) && op < (TakeProfit+TrailXStep+TrailXStop)) { tp=(TakeProfit+TrailXStep-TrailXStop); } } //--------------------------------------------------------------------------------------- double CalculateProfit() { double oprofit=0; for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { oprofit+=OrderProfit(); } } } } return(oprofit); } //-------------------------------------------------------------------------------------- void CloseAll() { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage)) Print("Не удалось закрыть ордер на покупку"); } if(OrderType()==OP_SELL) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage)) Print("Не удалось закрыть ордер на продажу"); } } } } } //--------------------------------------------------------------------------------------------------- double FindLastBuyPrice() { int oldticket,ticket= 0; double oldopenprice = 0; for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) { oldticket=OrderTicket(); if(oldticket>ticket) { ticket=oldticket; oldopenprice=OrderOpenPrice(); } } } } return(oldopenprice); } //--------------------------------------------------------------------------------------------------- double FindLastSellPrice() { int oldticket,ticket= 0; double oldopenprice = 0; for(int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) { oldticket=OrderTicket(); if(oldticket>ticket) { ticket=oldticket; oldopenprice=OrderOpenPrice(); } } } } return(oldopenprice); } //---------------------------------------------------------------------------------------------- int CountBuy() { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) count++; } } return(count); } //---------------------------------------------------------------------------------------------- int CountSell() { int count=0; for(int trade=OrdersTotal()-1; trade>=0; trade--) { if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) count++; } } return(count); } //+---------------------------------------------------------------------------------+ int CountTrades() { int count=0; for (int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) if(OrderType() == OP_BUY || OrderType() == OP_SELL) count++; } } return(count); } //----------------------------------------------------------------------------------+ int FindLastOrderType() { for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) return(OrderType()); } } return(-1); } //----------------------------------------------------------------------------------+这是由CalculateProfit()函数进行追踪的变体,两种追踪变体在交易中都有相同的指标--在交易数量 和利润方面。盈利不多--现在我将增加波动性和更准确的进入指标。我认为一个相同的指标可以解决这些问题,对吗?例如,分析最后5个小节或类似的东西。这种条形指标叫什么?什么是最好的时间框架?请分享你的想法,我怎样才能用一个指标获得两只鸟......。我有一石二鸟:)你是如何看待 这个EA的尾巴的? [删除] 2017.05.07 21:48 #1938 Alexey Viktorov: 为什么你不能应用它?你不必在别人的功能上附加或发明一些东西,但要写出你自己的功能,使它做你想做的事。可能是什么问题?无论有多少订单,都要计算出平均价格并从中拖动。当某些条件得到满足时,在浏览循环中的所有订单时,在一个新的水平上重新安排它们的止损,这个水平是由一个方向的所有订单的平均价格计算出来的。 保存了它,谢谢你。我还不这么认为。我的脑子里应该有一个代码和函数库,而在视频教程中,我们已经经历了我到目前为止所实现的所有东西。也许我会变得更好,把你的建议付诸实践。我今天发明的东西,看起来像个拖网吗?好吧,专家 顾问根据报告进行拖网,但我不知道哪一个是正确的--不正确的拖网只会增加损失的概率。我想说它有0.9的失败概率,大概是这样))))我想说的是,现在很怕平,指标很弱--我们只是加入了趋势,当我们有3个订单时,市场突然改变了方向,给我们带来了缩水--我们就没钱了。 Alexey Viktorov 2017.05.08 07:21 #1939 geratdc: 保存了它,谢谢。我还不能这样想。我脑子里一定有一个代码和函数库,我已经看了视频教程,这就是我现在使用的东西。也许我会变得更好,把你的建议付诸实践。我今天发明的东西,看起来像个拖网吗?好吧,专家 顾问根据报告进行拖网,但我不知道哪一个是正确的--不正确的拖网只会增加损失的概率。我想说它有0.9的失败概率,大概是这样))))我想说的是,现在很怕平,指标很弱--我们只是加入了趋势,当我们有3个订单时,市场突然改变了方向,给我们带来了缩水--我们就没钱了。好吧,我会尽力多做一点事情来教育你。我在发送时将称呼你为 "你"。我有一张指针的快照...请告诉我,在同一个刻度上调用同一个函数5次,不觉得不妥吗?但这是麻烦的一半。这个函数会浏览所有的订单。而这一切在一次勾选中进行了5次......而我算上4个这样的功能。我们可以很容易地在循环中再装上3个函数来搜索所有的订单,而不必绞尽脑汁。下面是其中的两个。if (cn==0 && CountBuy() + CountSell() == 0 && Ask > maprice)if (cn==0 && CountBuy() + CountSell() == 0 && Bid < maprice)if(cn==1 && CountBuy()==1) else if(cn==1 && CountSell()==1) if(cn==2 && CountBuy()==1 && CountSell()==1) else if(cn==2 && CountSell()==1 && CountBuy()==1)这些是 .Trailing(); } //--------------------------------------------------------------------------------------- void Trailing() { if (op > (TakeProfit+TrailXStep)) { tp=(TakeProfit+TrailXStep); } if (op > (TakeProfit+TrailXStep-TrailXStop) && op < (TakeProfit+TrailXStep+TrailXStop)) { tp=(TakeProfit+TrailXStep-TrailXStop); } } 它甚至还没有接近拖后腿。为了理解这一点,我们需要清楚地了解尾随的定义。我不能逐字记忆,但可以用以下方式描述:"跟随价格移动止损位,以减少可能的损失或增加 "保证 "的利润。而这extern double price,op,cn,tp;当你运行专家顾问时,它看起来像什么?可能是四条线...是否需要它们?今天的最后一件事:你不需要在你的脑子里有一个图书馆。有文件并知道如何使用它就足够了。我仍然记不住iMA(_Symbol, _Period, ,,,,,)的所有参数,进一步说我是在看了文档后才写的。因此,几乎所有的功能。幸运的是,他们不久前制作了工具提示,这并没有什么帮助。我不是要记住如何写这些或那些枚举。所以我每次都要看一下文件。 Renat Akhtyamov 2017.05.08 09:24 #1940 你能告诉我哪个函数检查这个复选框的状态吗? 1...187188189190191192193194195196197198199200201...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谁知道--如果你关闭部分订单,它的魔力或评论就会消失?
魔术将保留,订单票 将改变,评论将包含来自#xxxxxxxxxxx的父母订单票。父订单将有一个子订单票:to#xxxxxxxxxxx
魔术将保留,订单票 将改变,评论将包含来自#xxxxxxxxxxx的父母订单票。父订单将有一个子订单票:to#xxxxxxxxxxx
是的,这个K也在顶帽的外部变量 中--也许是某个函数的返回值......。
阿列克谢,你对我的问题能说些什么?我尝试在反向订单上附加追踪止损。你是否遇到过这样的问题?
而为了回答这个问题的东西,你必须了解问题本身。而从这个
我需要帮助 - 我有3个止损单,但视频教程中的跟踪止损的例子:)只适用于非连接的订单,在我的情况下,它们是通过算法连接的,即止盈是由三个订单的总和计算的,如果我进入了一个趋势,则由一个订单计算。好吧,我已经想到了一些东西,但我的专家顾问并没有开始赚取更多的钱--它已经开始赚取相同数量的订单,但与我以前的没有跟踪的EA相比,我得到的交易量要少2-3倍。因此,我的追踪不是追踪,而是一些胡言乱语。我应该如何把它放在链接的订单上? 谁能给我一个主意?我恐怕想不出别的办法了。 这是我 "跟踪 "的结果--它以蓝色显示。
附上1个测试的结果。那里到底有没有尾随止损?我不明白。为什么同一时期的利润没有增加?只有交易的数量 减少了2-3倍?
我无法理解任何事情。最奇怪的是,"我发明了一些东西",但你是否了解你所发明的东西?而这是"我如何在链接的订单上做"。但接下来是"恐怕我想不出别的 办法了"。
而为了回答任何有关问题,你必须了解问题本身。而从这一点来看。
我什么都听不懂。最奇怪的是"我已经想通 了",但你知道你想通了什么吗?然后是"我如何在联动权证上做到这 一点?"但接下来是"恐怕我想不出别的 办法了"。
根据我的理解,跟踪止损不能正确地应用于订单,所以我们应该非常注意这个函数CalculateProfit,即变量 "op",根据这个变量,如果所有3个订单的利润之和等于TakeProfit,订单就会被关闭,并尝试通过这个变量进行拖拽。我将努力在这个方向上想出一些办法。我理解与第三方abracadabra)))),这是很难处理的。
根据我的理解,追踪止损不能正确地应用于订单,这就是为什么我们应该仔细看看这个函数CalculateProfit,特别是变量 "op",根据这个变量,如果所有3个订单的利润之和等于TakeProfit,订单将被关闭,并尝试通过这个变量追踪。我将努力在这个方向上想出一些办法。我理解,很难处理第三方的abracadabrasions)))。
这是由CalculateProfit()函数进行追踪的变体,两种追踪变体在交易中都有相同的指标--在交易数量 和利润方面。盈利不多--现在我将增加波动性和更准确的进入指标。我认为一个相同的指标可以解决这些问题,对吗?例如,分析最后5个小节或类似的东西。这种条形指标叫什么?什么是最好的时间框架?请分享你的想法,我怎样才能用一个指标获得两只鸟......。我有一石二鸟:)
你是如何看待 这个EA的尾巴的?
为什么你不能应用它?你不必在别人的功能上附加或发明一些东西,但要写出你自己的功能,使它做你想做的事。可能是什么问题?无论有多少订单,都要计算出平均价格并从中拖动。当某些条件得到满足时,在浏览循环中的所有订单时,在一个新的水平上重新安排它们的止损,这个水平是由一个方向的所有订单的平均价格计算出来的。
保存了它,谢谢你。我还不这么认为。我的脑子里应该有一个代码和函数库,而在视频教程中,我们已经经历了我到目前为止所实现的所有东西。也许我会变得更好,把你的建议付诸实践。我今天发明的东西,看起来像个拖网吗?好吧,专家 顾问根据报告进行拖网,但我不知道哪一个是正确的--不正确的拖网只会增加损失的概率。我想说它有0.9的失败概率,大概是这样))))我想说的是,现在很怕平,指标很弱--我们只是加入了趋势,当我们有3个订单时,市场突然改变了方向,给我们带来了缩水--我们就没钱了。
保存了它,谢谢。我还不能这样想。我脑子里一定有一个代码和函数库,我已经看了视频教程,这就是我现在使用的东西。也许我会变得更好,把你的建议付诸实践。我今天发明的东西,看起来像个拖网吗?好吧,专家 顾问根据报告进行拖网,但我不知道哪一个是正确的--不正确的拖网只会增加损失的概率。我想说它有0.9的失败概率,大概是这样))))我想说的是,现在很怕平,指标很弱--我们只是加入了趋势,当我们有3个订单时,市场突然改变了方向,给我们带来了缩水--我们就没钱了。
好吧,我会尽力多做一点事情来教育你。
我在发送时将称呼你为 "你"。我有一张指针的快照...
请告诉我,在同一个刻度上调用同一个函数5次,不觉得不妥吗?但这是麻烦的一半。这个函数会浏览所有的订单。而这一切在一次勾选中进行了5次......而我算上4个这样的功能。我们可以很容易地在循环中再装上3个函数来搜索所有的订单,而不必绞尽脑汁。
下面是其中的两个。
这些是 .
它甚至还没有接近拖后腿。为了理解这一点,我们需要清楚地了解尾随的定义。我不能逐字记忆,但可以用以下方式描述:"跟随价格移动止损位,以减少可能的损失或增加 "保证 "的利润。
而这
当你运行专家顾问时,它看起来像什么?可能是四条线...是否需要它们?
今天的最后一件事:你不需要在你的脑子里有一个图书馆。有文件并知道如何使用它就足够了。我仍然记不住iMA(_Symbol, _Period, ,,,,,)的所有参数,进一步说我是在看了文档后才写的。因此,几乎所有的功能。幸运的是,他们不久前制作了工具提示,这并没有什么帮助。我不是要记住如何写这些或那些枚举。所以我每次都要看一下文件。
你能告诉我哪个函数检查这个复选框的状态吗?