编码帮助 - 页 65

 

这里有一个函数,它将检查订单的开放时间,并返回最近的开放时间的价格(如果没有以前的订单,它将返回0)。

double lastOrderOpenPrice(int magicNumber=0)

{

datetime lastTime = 0;

double lastPrice = 0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES)==false) break;

if (magicNumber!=0)

if (OrderMagicNumber() != magicNumber) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderOpenTime() <= lastTime) continue;

lastTime = OrderOpenTime();

lastPrice = OrderOpenPrice();

}

if (lastTime==0)

for(i=OrdersHistoryTotal()-1; i>=0; i--)

{

if (OrderSelect(i,SELECT_BY_POS, MODE_HISTORY)==false) break;

if (magicNumber!=0)

if (OrderMagicNumber() != magicNumber) continue;

if (OrderSymbol() != Symbol()) continue;

if (OrderOpenTime() <= lastTime) continue;

lastTime = OrderOpenTime();

lastPrice = OrderOpenPrice();

}

return(lastPrice);

}

[/PHP]

The assumtion is that currently open orders have times more recent than the already closed orders. If you wish to avoid that assumption, comment out this line :

[PHP] if (lastTime==0)

dasio:
你好。

我需要一个双倍的函数,给我最后一个开放订单的orderopenprice()的结果。

有人能帮助我吗?

谢谢你
 

你好。

我使用这个代码来计算lotsieze。有时我会收到131的错误。这段代码可以吗?

double Lotti1(double StopLoss,double Rischio_per_trade){

double MyLots,AllowedLots,MaxLots,MinLot,StopValue,TickValue;

int RightLots;

AllowedLots=(AccountFreeMargin()* Rischio_per_trade/100);

if (Digits==2 || Digits==4)

TickValue=MarketInfo(Symbol(),MODE_TICKVALUE)/10;

else

TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);

StopValue=StopLoss*TickValue;

MinLot=MarketInfo(Symbol(),MODE_MINLOT);

MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);

RightLots=MathRound(AllowedLots/StopValue);

double soldi_ora = AccountBalance()/100;

MyLots = soldi_ora*(Rischio_per_trade/10);

MyLots = NormalizeDouble(MyLots/StopLoss,2);

MyLots = NormalizeDouble(MyLots/(MarketInfo(Symbol(),MODE_TICKVALUE)/100),2);

MyLots = NormalizeDouble(MyLots/100,2);

return(MyLots);

}[/PHP]

the Stoploss is = [PHP]StopLoss= NormalizeDouble(Ask-SLbuy()-20*Point,5)*10000;

和Rischio_per_trade = 0.5。

谢谢你

 

dasio

试试这个帖子中的函数:https://www.mql5.com/en/forum/general

dasio:
你好。

我使用这个代码来计算lotsieze。有时我会收到131的错误。这段代码可以吗?

double Lotti1(double StopLoss,double Rischio_per_trade){

double MyLots,AllowedLots,MaxLots,MinLot,StopValue,TickValue;

int RightLots;

AllowedLots=(AccountFreeMargin()* Rischio_per_trade/100);

if (Digits==2 || Digits==4)

TickValue=MarketInfo(Symbol(),MODE_TICKVALUE)/10;

else

TickValue=MarketInfo(Symbol(),MODE_TICKVALUE);

StopValue=StopLoss*TickValue;

MinLot=MarketInfo(Symbol(),MODE_MINLOT);

MaxLots=MarketInfo(Symbol(),MODE_MAXLOT);

RightLots=MathRound(AllowedLots/StopValue);

double soldi_ora = AccountBalance()/100;

MyLots = soldi_ora*(Rischio_per_trade/10);

MyLots = NormalizeDouble(MyLots/StopLoss,2);

MyLots = NormalizeDouble(MyLots/(MarketInfo(Symbol(),MODE_TICKVALUE)/100),2);

MyLots = NormalizeDouble(MyLots/100,2);

return(MyLots);

}[/PHP]

the Stoploss is = [PHP]StopLoss= NormalizeDouble(Ask-SLbuy()-20*Point,5)*10000;

和Rischio_per_trade = 0.5。

谢谢你
 

亲爱的朋友们。

恭祝您和所有论坛成员在新的一年里身体健康,万事如意!我真的很感谢这里许多杰出和慷慨的编码员,以及来自这个论坛的成员的精彩想法。所有这些都对我提高交易技能有很大的帮助(虽然我在这个职业上还是个白痴 )。

最近,在回顾市场和我的交易方法时,我想到了一个对我帮助很大的指标(也许还有其他人)。我的想法很简单,但把它转化为代码就超出了我的能力范围。我不知道这样的指标是否存在,所以我将详细描述我的想法,并希望有人能帮助我找到或制作一个最适合的指标。

- 总体想法:我想在给定的固定范围内连续跟踪市场价格。该指标将给我一些关于价格段(给定的固定范围)内的价格行为的必要信息,如。(1)上限水平,(2)下限水平,(3)中值水平,(4)范围内的条数。我也想知道给定范围内的控制点(POC)水平,但可能编码太复杂,而且会消耗很多电脑内存。

- 类比:我发现流行的指标如 "Market Profile","Price Channel",或 "Session HiLo",......与我的想法很相似。但它们都受到时间间隔的限制,如每小时、每天......不是基于给定的固定范围,或者缺乏我上面提到的一些功能。我曾尝试对它们进行重新编码,以适应我的想法,但直到现在还没有成功。

- 关于指标的愿望:(1)输入参数。固定的点数范围;时间间隔(分钟、小时或天)或用于计算在给定范围内关闭的条数的条数;当价格触及水平线时的警报(可选)。

(2) 在主图表上的输出:显示对应于区间水平的水平线(上、下、中),以及告知在给定时间内区间内计算的条数的文本。

(3) 持续更新:信息将在三种情况下被更新:(a) 价格在当前给定范围内创下新的高点,(b) 当前给定范围内创下新的低点,(c) 越来越多的柱子在当前给定范围内合并。

我通常要手动完成所有这些事情。现在我希望这个指标能帮助我简化工作,节省时间,并使我的注意力集中在价格行为上。在互联网上搜索,但我找不到这样的工具。如果你知道一个,或者做一个,我将非常感激。

谢谢你的考虑和帮助

并再次祝你新年快乐!

最好的问候。

冯小刚

哦,我忘了附上关于我的指标形象的图片。

附加的文件:
 

我附上另一张图片以澄清我的想法。

a) 当前区间的高点或低点是与输入的Bar Number分开确定的。高/低点适应于给定的范围大小和当前的市场价格行为。

b) 输入的Bar Number只是用来计算在当前范围内关闭的条数

c) 我可以在一个图表上多次使用该指标,当然是在不同的输入设置下。

fareastol:
亲爱的朋友们。

恭祝您和所有论坛成员在新的一年里身体健康,万事如意!我真的很感谢这里许多杰出和慷慨的编码员,以及来自这个论坛的成员的精彩想法。所有这些都对我提高交易技能有很大的帮助(虽然我在这个职业上还是个白痴 )。

最近,在回顾市场和我的交易方法时,我想到了一个对我帮助很大的指标(也许还有其他人)。我的想法很简单,但把它转化为代码就超出了我的能力范围。我不知道这样的指标是否存在,所以我将详细描述我的想法,并希望有人能帮助我找到或制作一个最适合的指标。

- 总体想法:我想在给定的固定范围内连续跟踪市场价格。该指标将给我一些关于价格段(给定的固定范围)内的价格行为的必要信息,如。(1)上限水平,(2)下限水平,(3)中值水平,(4)范围内的条数。我也想知道给定范围内的控制点(POC)水平,但可能编码太复杂,而且会消耗很多电脑内存。

- 类比:我发现流行的指标如 "Market Profile","Price Channel",或 "Session HiLo",......与我的想法很相似。但它们都受到时间间隔的限制,如每小时、每天......不是基于给定的固定范围,或者缺乏我上面提到的一些功能。我曾尝试对它们进行重新编码以适应我的想法,但到现在还没有成功。

- 关于指标的愿望:(1)输入参数。固定的点数范围;时间间隔(分钟、小时或天)或用于计算在给定范围内关闭的条数的条数;当价格触及水平线时的警报(可选)。

(2) 在主图表上的输出:显示对应于区间水平的水平线(上、下、中),以及告知在给定时间内区间内计算的条数的文本。

(3) 持续更新:信息将在三种情况下被更新:(a) 价格在当前给定范围内创下新的高点,(b) 当前给定范围内创下新的低点,(c) 越来越多的柱子在当前给定范围内合并。

我通常要手动完成所有这些事情。现在我希望这个指标能帮助我简化工作,节省时间,并使我的注意力集中在价格行为上。在互联网上搜索,但我找不到这样的工具。如果你知道一个,或者做一个,我将非常感激。

谢谢你的考虑和帮助

并再次祝你新年快乐!

最好的问候。

尊敬的朋友

哦,我忘了附上关于我的指标形象的图片。
附加的文件:
 

我想我毕竟自己做了一些东西。现在与你分享。

正如指标里面所说,我没有发明任何东西,只是把我有的两个相关指标混合在一起。也许它没有很好的 "混合"。

如果你认为它有用的话,请看一看,并使它变得更好!

附加的文件:
 

绘制多个矩形对象

你好。

我想画多个矩形来检查最后的n个蜡烛。

该点有一个简单的规则。

附上一个例子。

这个没有背景的大矩形定义了规则(使用移动平均数检查价格从1点到2点)。

绘制矩形的点是柱状图的高点和低点,也就是范围内的最高点。

我应该如何编码?

谢谢你的回答。

对不起。

我现在不能附上图片。然而,让我们假设有两个移动平均线。点1是快速MA与慢速MA向上的交叉,点2是快速MA与慢速MA向下的交叉。

 

谁能帮我修改一下附件中的rsi图表条形指标?

这个指标在RSI高于50水平时显示蓝条,低于这个水平时显示红条。

事实上,50水平是RSI的中间水平。如果再增加两个水平,即70和30,即真正的超买和超卖水平,那就更有用了,当RSI超过这两个水平70/30时,蜡烛也应该改变颜色。如果有任何帮助,我将非常感激,并感谢您的帮助。

附加的文件:
 

拉斯洛。

试试这个版本吧。它仍然适用于两个级别,但它显示(或者说,不显示)三种状态。当水平线向上或向下突破时,它给条形图着色,如果rsi值在2个水平线之间,它让条形图保持原样(所以它们是简单的、不被指标着色的条形图),下面是一个例子,它看起来像什么,它与 "常规 "rsi的比较。

Laszlo:
谁能帮助我修改所附的rsi图表条形指标?

当RSi高于50水平时,该指标显示蓝色条,低于此水平时显示红色条。

事实上,50水平是RSI的中间水平。如果再增加两个水平,即70和30,这才是真正的超买和超卖水平,那就更有用了,当RSI超过这两个水平70/30时,蜡烛也应该改变颜色。如果有任何帮助,我将非常感激,并感谢您的帮助。
附加的文件:
 
fareastol:
我想我自己毕竟做了些什么。现在与你分享。

正如指标里面所说,我没有发明任何东西,只是把我有的两个相关指标混合在一起。也许这不是很好的 "混合"。

如果你认为它有用,请看一看,并把它做得更好!

Fareastol,我喜欢你的范围指标,我在想,如果你能添加 "起点 "拖动(你有)和 "终点拖动",然后它将自动绘制该期间的范围,那将会很酷。