问吧! - 页 82 1...757677787980818283848586878889...182 新评论 tsdpka 2007.10.01 15:58 #811 编剧大师请帮忙 编码员大师 我想为牛熊指标写一个越过零线时的声音提示,我对MQL没有经验,但把其他几个指标的一些代码放在一起,在编译代码时没有错误。 非常感谢 //+------------------------------------------------------------------+ //| | //| | //| | //| | //+------------------------------------------------------------------+ #财产版权 "forex-tsd" #property link "https://www.forex-tsd.com" #属性 indicator_separate_window #属性 indicator_buffers 2 #属性 indicator_color1 Lime #属性 indicator_color2 Crimson #属性 indicator_level1 0 double ExtMapBuffer1[]; double ExtMapBuffer2[]; double valbull[]; double valbear[]; //+------------------------------------------------------------------+ //|自定义指标 初始化函数| //+------------------------------------------------------------------+ int init() { IndicatorBuffers(3); SetIndexBuffer(0,ExtMapBuffer1); SetIndexDrawBegin(0,2); SetIndexLabel(0, "ExtMapBuffer1")。 SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4); SetIndexDrawBegin(1,2); SetIndexLabel(1, "ExtMapBuffer2")。 //---- 指标 //---- return(0); } //+------------------------------------------------------------------+ //|Custor指标去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- TODO:在这里添加你的代码 //---- return(0); } //+------------------------------------------------------------------+ //| 自定义指标迭代函数| //+------------------------------------------------------------------+ int start() { int shift,counted_bars=IndicatorCounted()。 double valbear[], valbull[]; //----,检查可能的错误 if(counted_bars<0) return(-1); //---- 最后一个被计算的柱子将被重新计算 if(counted_bars>0) counted_bars--; shift=Bars-1。 while(shift>=0) { valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0)。 valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0)。 如果(valbull[shift]>0) { ExtMapBuffer1[shift]=valbull[shift]。 ExtMapBuffer2[shift]=0。 } 否则 { ExtMapBuffer2[shift]=valbull[shift]。 ExtMapBuffer1[shift]=0。 } shift--;// } //---- 警报模块 #define SIGNAL_BAR 1 //---- 静态变量,最后一棒的时间 //---- 和最后的警报方向。 static int PrevSignal = 0, PrevTime = 0; //---- 如果选择要分析的条形图不是一个零条形图。 // 就没有必要多次检查警报。 //---- 几次。如果没有新条形开始形成,则退出。 if(SIGNAL_BAR > 0 && Time[0] <= PrevTime ) return(0); //---- 标志着此条线被检查 PrevTime = Time[0]; 如果(PrevSignal <= 0) { 如果(valbull[SIGNAL_BAR] > 0 ) { PrevSignal = 1; Alert("BullChannell_positiv (", Symbol(), ", ", Period(), ") - 买入!!!")。 } } 如果(PrevSignal >= 0) { 如果(valbull[SIGNAL_BAR] < 0 ) { PrevSignal = -1; Alert("BearChannell_negativ (", Symbol(), " , " , Period(), " ) - 卖出!!!")。 } } //---- end alert module //---- return(0); } //+------------------------------------------------------------------+ Ask! 编码帮助 艾略特波 vntb 2007.10.06 22:59 #812 如何使用函数来区分已建订单和挂单? 如何使用函数来区分已开订单和待处理订单? 谢谢。 Michel 2007.10.07 18:42 #813 vntb: 如何使用函数来区分开仓订单和挂单?谢谢。 检查 OrderType()。 OrderType() == OP_BUY //BuyOrder (已打开) OrderType() == OP_SELL //卖出订单(已打开) OrderType() == OP_BUYLIMIT //买入限价单(待定) OrderType() == OP_SELLLIMIT //卖出限价单(待定) OrderType() == OP_BUYSTOP //买入止损单(待定) OrderType() == OP_SELLSTOP //卖出止损单(待定) sinecure 2007.10.08 18:48 #814 EA中的iMAOnArray 大家好。 我想根据指标(如CCI、Force、RSI)上的移动平均线的交叉点来做一个EMA。然而,我无法理解如何声明一个数组并运行iMAOnArray函数 来制造变量。 例如,在下面的代码中,我想把图表中的RSI数据放在一个缓冲区中,然后利用这些数据产生一个移动平均线,用它来触发交易。我做错了什么? 谢谢你的任何评论或建议。 秋天 double RSI[]; ArrayResize(RSI,Bars)。 ArraySetAsSeries(RSI,true)。 for(int i=Bars; i>=0; i--) { RSI = (iRSI(NULL,0,RSIPeriod,RSIPrice,i))。 } double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0); monotomiatsd 2007.10.08 23:10 #815 你好 有谁拥有带警报的阶梯动量? 我认为这将是一个伟大的指标 谢谢 问候! [删除] 2007.10.16 16:23 #816 按级别关闭交易 你好,我想知道如何在价格达到一定水平时关闭交易。例如,在MA线以上55点。我试图在订单发送的获利部分包含MA,但是测试人员拒绝了我的EA。"无效的东西 "错误信息。谢谢你。 Ahmed Soliman 2007.10.16 16:32 #817 Sendra: 你好,我想知道如何在价格达到一定水平时关闭交易。例如,在MA线以上55点。我试图在OrderSend的TakeProfit部分包含MA,但测试人员拒绝了我的EA。"无效的东西 "错误信息。谢谢你。 首先得到移动 平均线。 double MA = iMA(...); 然后像这样计算TakeProfit。 double TP = MA + (55*Point); // 或者TP = MA-(55*Point); 在卖出情况下。 [删除] 2007.10.16 22:40 #818 成功了!! 嘿,谢谢,CodersGuru。它确实有效。但这也让我想到:如果我可以把止盈 移到某个不是静态的水平,我也可以对我的止损做同样的事情(不使用追踪止损)。 我试了一下。 它确实起作用了,但效果不好。所以,我想我必须使用追踪止损。这样做对吗?(请注意,我还没有学会如何编写追踪止损的代码)。 谢谢你。 wolfe 2007.10.16 23:31 #819 内部追踪止损 Sendra: 嘿,谢谢,CodersGuru。这确实有效。但这也让我想到:如果我可以将止盈移到某个不是静态的水平,我也可以对我的止损做同样的事情(不使用追踪止损)。我试过了。 它确实起作用了,但结果不好。所以,我想我必须使用拖曳止损。这样做对吗?(请注意,我还没有学会如何编写追踪止损的代码)。 谢谢你。 我对内部追踪止损是这样做的。(这是一个多头订单的例子)它似乎是有效的。 希望这有帮助。 extern int Trailing_Stop=20; static double Trailing_Long; bool Read_Long_Open; 如果(插入你的多头条目决定) { 这里有Ordersend()函数 Read_Long_Open=true。 } 如果(Read_Long_Open==true) { 如果(OrderSelect(T_1L, SELECT_BY_TICKET)==true) { Trailing_Long=OrderOpenPrice(); Print(" Trailing_Long =",Trailing_Long); Read_Long_Open=false。 } } 如果(Read_Long_Open==false) { 如果 (Trailing_Long < Bid) { Trailing_Long=Bid; Print("调整后的Trailing_Long =",Trailing_Long); } } 如果(Bid <= Trailing_Long-Trailing_Stop*Point) { OrderClose()函数 Print("多头订单关闭")。 } Ask! [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. [删除] 2007.10.17 08:37 #820 谢谢 你好,Wolfe。 我试了一下你的代码,但得到的结果却是否定的。请不要问为什么,因为我也不知道答案。你要知道,我在编码方面还处于打了就跑的阶段。但还是要感谢你,你的代码给了我足够的灵感,让我自己写出了足够的结果。 所以,谢谢。 1...757677787980818283848586878889...182 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
编剧大师请帮忙
编码员大师
我想为牛熊指标写一个越过零线时的声音提示,我对MQL没有经验,但把其他几个指标的一些代码放在一起,在编译代码时没有错误。
非常感谢
//+------------------------------------------------------------------+
//| |
//| |
//| |
//| |
//+------------------------------------------------------------------+
#财产版权 "forex-tsd"
#property link "https://www.forex-tsd.com"
#属性 indicator_separate_window
#属性 indicator_buffers 2
#属性 indicator_color1 Lime
#属性 indicator_color2 Crimson
#属性 indicator_level1 0
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double valbull[];
double valbear[];
//+------------------------------------------------------------------+
//|自定义指标 初始化函数|
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(3);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexDrawBegin(0,2);
SetIndexLabel(0, "ExtMapBuffer1")。
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4);
SetIndexDrawBegin(1,2);
SetIndexLabel(1, "ExtMapBuffer2")。
//---- 指标
//----
return(0);
}
//+------------------------------------------------------------------+
//|Custor指标去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO:在这里添加你的代码
//----
return(0);
}
//+------------------------------------------------------------------+
//| 自定义指标迭代函数|
//+------------------------------------------------------------------+
int start()
{
int shift,counted_bars=IndicatorCounted()。
double valbear[], valbull[];
//----,检查可能的错误
if(counted_bars<0) return(-1);
//---- 最后一个被计算的柱子将被重新计算
if(counted_bars>0) counted_bars--;
shift=Bars-1。
while(shift>=0)
{
valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0)。
valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0)。
如果(valbull[shift]>0)
{
ExtMapBuffer1[shift]=valbull[shift]。
ExtMapBuffer2[shift]=0。
}
否则
{
ExtMapBuffer2[shift]=valbull[shift]。
ExtMapBuffer1[shift]=0。
}
shift--;//
}
//---- 警报模块
#define SIGNAL_BAR 1
//---- 静态变量,最后一棒的时间
//---- 和最后的警报方向。
static int PrevSignal = 0, PrevTime = 0;
//---- 如果选择要分析的条形图不是一个零条形图。
// 就没有必要多次检查警报。
//---- 几次。如果没有新条形开始形成,则退出。
if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )
return(0);
//---- 标志着此条线被检查
PrevTime = Time[0];
如果(PrevSignal <= 0)
{
如果(valbull[SIGNAL_BAR] > 0 )
{
PrevSignal = 1;
Alert("BullChannell_positiv (", Symbol(), ", ", Period(), ") - 买入!!!")。
}
}
如果(PrevSignal >= 0)
{
如果(valbull[SIGNAL_BAR] < 0 )
{
PrevSignal = -1;
Alert("BearChannell_negativ (", Symbol(), " , " , Period(), " ) - 卖出!!!")。
}
}
//---- end alert module
//----
return(0);
}
//+------------------------------------------------------------------+
如何使用函数来区分已建订单和挂单?
如何使用函数来区分已开订单和待处理订单?
谢谢。
如何使用函数来区分开仓订单和挂单?谢谢。
检查 OrderType()。
OrderType() == OP_BUY //BuyOrder (已打开)
OrderType() == OP_SELL //卖出订单(已打开)
OrderType() == OP_BUYLIMIT //买入限价单(待定)
OrderType() == OP_SELLLIMIT //卖出限价单(待定)
OrderType() == OP_BUYSTOP //买入止损单(待定)
OrderType() == OP_SELLSTOP //卖出止损单(待定)
EA中的iMAOnArray
大家好。
我想根据指标(如CCI、Force、RSI)上的移动平均线的交叉点来做一个EMA。然而,我无法理解如何声明一个数组并运行iMAOnArray函数 来制造变量。
例如,在下面的代码中,我想把图表中的RSI数据放在一个缓冲区中,然后利用这些数据产生一个移动平均线,用它来触发交易。我做错了什么?
谢谢你的任何评论或建议。
秋天
double RSI[];
ArrayResize(RSI,Bars)。
ArraySetAsSeries(RSI,true)。
for(int i=Bars; i>=0; i--)
{
RSI = (iRSI(NULL,0,RSIPeriod,RSIPrice,i))。
}
double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0);
你好
有谁拥有带警报的阶梯动量?
我认为这将是一个伟大的指标
谢谢
问候!
按级别关闭交易
你好,我想知道如何在价格达到一定水平时关闭交易。例如,在MA线以上55点。我试图在订单发送的获利部分包含MA,但是测试人员拒绝了我的EA。"无效的东西 "错误信息。谢谢你。
你好,我想知道如何在价格达到一定水平时关闭交易。例如,在MA线以上55点。我试图在OrderSend的TakeProfit部分包含MA,但测试人员拒绝了我的EA。"无效的东西 "错误信息。谢谢你。
首先得到移动 平均线。
double MA = iMA(...);
然后像这样计算TakeProfit。
double TP = MA + (55*Point); // 或者TP = MA-(55*Point); 在卖出情况下。
成功了!!
嘿,谢谢,CodersGuru。它确实有效。但这也让我想到:如果我可以把止盈 移到某个不是静态的水平,我也可以对我的止损做同样的事情(不使用追踪止损)。
我试了一下。
它确实起作用了,但效果不好。所以,我想我必须使用追踪止损。这样做对吗?(请注意,我还没有学会如何编写追踪止损的代码)。
谢谢你。
内部追踪止损
嘿,谢谢,CodersGuru。这确实有效。但这也让我想到:如果我可以将止盈移到某个不是静态的水平,我也可以对我的止损做同样的事情(不使用追踪止损)。
我试过了。
它确实起作用了,但结果不好。所以,我想我必须使用拖曳止损。这样做对吗?(请注意,我还没有学会如何编写追踪止损的代码)。
谢谢你。我对内部追踪止损是这样做的。(这是一个多头订单的例子)它似乎是有效的。 希望这有帮助。![](https://c.mql5.com/forextsd/smiles/regular_smile.png)
extern int Trailing_Stop=20;
static double Trailing_Long;
bool Read_Long_Open;
如果(插入你的多头条目决定)
{
这里有Ordersend()函数
Read_Long_Open=true。
}
如果(Read_Long_Open==true)
{
如果(OrderSelect(T_1L, SELECT_BY_TICKET)==true)
{
Trailing_Long=OrderOpenPrice();
Print(" Trailing_Long =",Trailing_Long);
Read_Long_Open=false。
}
}
如果(Read_Long_Open==false)
{
如果 (Trailing_Long < Bid)
{
Trailing_Long=Bid;
Print("调整后的Trailing_Long =",Trailing_Long);
}
}
如果(Bid <= Trailing_Long-Trailing_Stop*Point)
{
OrderClose()函数
Print("多头订单关闭")。
}
谢谢
你好,Wolfe。
我试了一下你的代码,但得到的结果却是否定的。请不要问为什么,因为我也不知道答案。你要知道,我在编码方面还处于打了就跑的阶段。但还是要感谢你,你的代码给了我足够的灵感,让我自己写出了足够的结果。
所以,谢谢。