如何编码? - 页 197 1...190191192193194195196197198199200201202203204...347 新评论 soak614 2009.08.05 14:28 #1961 有没有人可以帮助编码这个EA? 你好。 我目前正在用一个马丁格尔的EA进行交易,它最多可以开4级订单。我刚刚想到了一个对冲策略,可以减少使用这个EA的风险。以下是我的策略的描述。 1.对冲EA将监控开仓订单的缩减。如果总的浮动损失大于预先确定的数额,它将触发EA开出一个与开仓订单相反的对冲订单。 2.2.对冲订单的手数是根据最后一个开仓订单的手数的倍数(用户可以设置倍数)来计算的(例如,如果最后一个平仓订单的手数是1.6,倍数设置为2,那么对冲订单将以3.2的手数打开。 3.3.当对冲订单回到其开仓水平时,对冲订单将被自动关闭。 4.4.当整个篮子(开仓订单+对冲订单)达到预先确定的净利润数额时,所有订单将被关闭。 我想知道是否有好的程序员可以为我编码这个对冲EA。我认为它对其他马丁格尔EA也非常有用。非常感谢! 最好的问候。 华莱士 toiii 2009.08.05 14:33 #1962 哇... 谢谢大家。 买入止损和卖出止损 的情况如何? 只要把 "买入 "改为 "卖出 "即可? 我只想为1个货币对建立2个头寸,不要超过这个数目。 对不起,我还是个新手... liew_stanley 2009.08.05 15:51 #1963 如何在EA中编码这个indis? 你好,我是一个新的学习者,有兴趣学习mql,谁能告诉我如何将这个代码输入EA? extern int Fast.MA.Period = 5; extern int Slow.MA.Period = 34; extern int Signal.period = 5; //---- 缓冲区 double Buffer1[], Buffer2[]。 b2[], b3[]; //+------------------------------------------------------------------+ //|自定义指标 初始化函数 //+------------------------------------------------------------------+ int init() { //---- 指标 // 两个额外的缓冲区用于计数 IndicatorBuffers(4); IndicatorShortName("MA_5_34")。 SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3); SetIndexArrow(0,242); //向下 226 234 242 SetIndexBuffer(0,b2); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3); SetIndexArrow(1,241); //向上 225 233 241 SetIndexBuffer(1,b3); //这些缓冲区不会被绘制出来,只是用来确定箭头。 SetIndexBuffer(2,Buffer1); SetIndexBuffer(3,Buffer2); //---- return(0); } //+------------------------------------------------------------------+ //|Custor指示器的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //|自定义指标迭代函数| //+------------------------------------------------------------------+ int start() { int i, counted_bars=IndicatorCounted(); 双重MA5,MA34; int limit=Bars-counted_bars; Print(" print limit = ", limit); if(counted_bars>0) limit++; <---- 谁能给我解释一下这意味着什么? // 主线 for(i=0; i<limit; i++) <----,谁能给我解释一下这是什么意思? { MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。 MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。 Buffer1=MA5-MA34。 } // 信号线 for(i=0; i<limit; i++) <----,谁能向我解释一下这意味着什么? { Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。 } <----,谁能向我解释一下这意味着什么? // 箭头 for(i=0; i<limit; i++) { if(Buffer1 > Buffer2 && Buffer1 < Buffer2) b2 = High+10*Point; 如果(Buffer1 Buffer2) b3 = Low-10*Point; <---- 谁能给我解释一下这意味着什么? } //---- return(0); } 谢谢大家 =^_^= How to code? Need guide for mql4 顾比多重移动平均线 Roger09 2009.08.05 16:32 #1964 liew_stanley: if(counted_bars>0) limit++; <---- 谁能向我解释一下这意味着什么?// 主线 for(i=0; i<limit; i++) <----,谁能给我解释一下这意味着什么? // 信号线 for(i=0; i<limit; i++) <----,谁能向我解释一下这意味着什么? { Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。 } <----,谁能向我解释一下这意味着什么? // 箭头 for(i=0; i<limit; i++) { if(Buffer1 > Buffer2 && Buffer1 < Buffer2) b2 = High+10*Point; 如果(Buffer1 Buffer2) b3 = Low-10*Point; <---- 谁能向我解释一下这意味着什么? 谢谢大家=^_^= 这很简单。 当你开始你的indi时,Bars=1000(例如),counted_bars=0。所以limit=1000,你的indi计算所有的1000条。之后counted_bars=1000,每一个新的tick indi只计算最后一个(零)bar。当下一个条形图出现时,limit=1,indi重新计算最后两个条形图。 b3=Low-10*Point;-它只是一条比条形图的最低点低10点的线。 raphael 2009.08.05 16:49 #1965 liew_stanley: 你好,我是一个新的学习者,有兴趣学习mql,谁能告诉我如何在EA中编码?extern int Fast.MA.Period = 5; extern int Slow.MA.Period = 34; Extern int Signal.period = 5; //---- 缓冲区 double Buffer1[], Buffer2[]。 b2[], b3[]; //+------------------------------------------------------------------+ //|自定义指标初始化函数 //+------------------------------------------------------------------+ int init() { //---- 指标 // 两个额外的缓冲区用于计数 IndicatorBuffers(4); IndicatorShortName("MA_5_34")。 SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3); SetIndexArrow(0,242); //向下 226 234 242 SetIndexBuffer(0,b2); SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3); SetIndexArrow(1,241); //向上 225 233 241 SetIndexBuffer(1,b3); //这些缓冲区不会被绘制出来,只是用来确定箭头。 SetIndexBuffer(2,Buffer1); SetIndexBuffer(3,Buffer2); //---- return(0); } //+------------------------------------------------------------------+ //|Custor指示器的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //|自定义指标迭代函数| //+------------------------------------------------------------------+ int start() { int i, counted_bars=IndicatorCounted(); 双重MA5,MA34; int limit=Bars-counted_bars; Print(" print limit = ", limit); if(counted_bars>0) limit++; <---- 谁能给我解释一下这意味着什么? // 主线 for(i=0; i<limit; i++) <----,谁能向我解释一下这意味着什么? { MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。 MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。 Buffer1=MA5-MA34。 } // 信号线 for(i=0; i<limit; i++) <----,谁能给我解释一下这意味着什么? { Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。 } <----,谁能向我解释一下这意味着什么? // 箭头 for(i=0; i<limit; i++) { if(Buffer1 > Buffer2 && Buffer1 < Buffer2) b2 = High+10*Point; 如果(Buffer1 Buffer2) b3 = Low-10*Point; <---- 谁能给我解释一下这意味着什么? } //---- return(0); } 谢谢大家=^_^= 如果你想在EA中使用这个指标,你可以使用icustom()函数 来访问它。你真的不需要了解指标的任何代码,只需要了解它所吐出的数据。至少这是最简单的方法。 liew_stanley 2009.08.05 17:27 #1966 fxcourt: 如果你想在EA中使用这个指标,你可以使用icustom()函数来访问它。你真的不需要了解指标的任何代码,只需要了解它所吐出的数据。至少这是最简单的方法。 意思是说,在EA中使用函数 icustom()来调用indis? 在EA中应该如何编写编码? 能否给我一些指导? 谢谢 Arshed Qureshi 2009.08.06 02:45 #1967 toiii: 哇...谢谢大家。 买入止损和卖出止损的情况如何? 只要把 "买入 "改为 "卖出 "即可? 我只想为1个货币对建立2个头寸,不要超过这个数目。 对不起,我还是个新手... 阅读此文 MQL4教程 liew_stanley 2009.08.06 04:40 #1968 这是正确的编码吗? extern double TakeProfit=100; extern double Lots=1; extern double TrailingStop=35; extern int ShortEma = 5; extern int LongEma = 34; //+------------------------------------------------------------------+ //| 专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int Crossed (double line1 , double line2) { static int last_direction = 0; static int current_direction = 0; if(line1>line2)current_direction = 1; //向上 如果(line1<line2)current_direction = 2; //向下 如果(current_direction != last_direction) //改变了 { last_direction = current_direction; return (last_direction); } 否则 { 返回(0)。 } } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { //---- int total; double shortEma, longEma; shortEma = iCustom(NULL,0, "Test_Demo",13,0,0); longEma = iCustom(NULL,0, "Test_Demo",54,0,0); Print("shortEma = " + shortEma + " : longEma = " + longEma)。 int isCrossed = 0; isCrossed = Crossed (LongEma,ShortEma); total = OrdersTotal(); if(total < 1) { 如果(isCrossed == 1) { 1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green)。 如果(1>0) { if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice()); } 否则 Print("打开BUY订单错误。",GetLastError())。 return(0); } 如果(isCrossed == 2) { 2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red) 。 如果(2>0) { 如果(OrderSelect(2,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice()); } 否则 Print("打开卖出订单出错。",GetLastError())。 return(0); } return(0); } } 我得到一个错误,说1和2是意外的标记,这是什么意思? 谢谢 How to code? 原始想法 Ema Cross! Roger09 2009.08.06 04:51 #1969 我猜你删除了一些东西,忘记了。 2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red); if(2>0) 这是胡说八道。 Arshed Qureshi 2009.08.06 04:58 #1970 liew_stanley: extern double TakeProfit=100;外置双数 Lots=1; 外置双数TrailingStop=35。 我得到一个错误,说1和2是意外标记,这是什么意思? 谢谢 在OrderSend(....)之前删除1=,和2=。 1...190191192193194195196197198199200201202203204...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
有没有人可以帮助编码这个EA?
你好。
我目前正在用一个马丁格尔的EA进行交易,它最多可以开4级订单。我刚刚想到了一个对冲策略,可以减少使用这个EA的风险。以下是我的策略的描述。
1.对冲EA将监控开仓订单的缩减。如果总的浮动损失大于预先确定的数额,它将触发EA开出一个与开仓订单相反的对冲订单。
2.2.对冲订单的手数是根据最后一个开仓订单的手数的倍数(用户可以设置倍数)来计算的(例如,如果最后一个平仓订单的手数是1.6,倍数设置为2,那么对冲订单将以3.2的手数打开。
3.3.当对冲订单回到其开仓水平时,对冲订单将被自动关闭。
4.4.当整个篮子(开仓订单+对冲订单)达到预先确定的净利润数额时,所有订单将被关闭。
我想知道是否有好的程序员可以为我编码这个对冲EA。我认为它对其他马丁格尔EA也非常有用。非常感谢!
最好的问候。
华莱士
哇...
谢谢大家。
买入止损和卖出止损 的情况如何?
只要把 "买入 "改为 "卖出 "即可?
我只想为1个货币对建立2个头寸,不要超过这个数目。
对不起,我还是个新手...
如何在EA中编码这个indis?
你好,我是一个新的学习者,有兴趣学习mql,谁能告诉我如何将这个代码输入EA?
extern int Fast.MA.Period = 5;
extern int Slow.MA.Period = 34;
extern int Signal.period = 5;
//---- 缓冲区
double Buffer1[],
Buffer2[]。
b2[],
b3[];
//+------------------------------------------------------------------+
//|自定义指标 初始化函数
//+------------------------------------------------------------------+
int init()
{
//---- 指标
// 两个额外的缓冲区用于计数
IndicatorBuffers(4);
IndicatorShortName("MA_5_34")。
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); //向下 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //向上 225 233 241
SetIndexBuffer(1,b3);
//这些缓冲区不会被绘制出来,只是用来确定箭头。
SetIndexBuffer(2,Buffer1);
SetIndexBuffer(3,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//|Custor指示器的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
双重MA5,MA34;
int limit=Bars-counted_bars;
Print(" print limit = ", limit);
if(counted_bars>0) limit++; <---- 谁能给我解释一下这意味着什么?
// 主线
for(i=0; i<limit; i++) <----,谁能给我解释一下这是什么意思?
{
MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。
MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。
Buffer1=MA5-MA34。
}
// 信号线
for(i=0; i<limit; i++) <----,谁能向我解释一下这意味着什么?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。
} <----,谁能向我解释一下这意味着什么?
// 箭头
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = High+10*Point;
如果(Buffer1 Buffer2)
b3 = Low-10*Point; <---- 谁能给我解释一下这意味着什么?
}
//----
return(0);
}
谢谢大家 =^_^=
if(counted_bars>0) limit++; <---- 谁能向我解释一下这意味着什么?
// 主线
for(i=0; i<limit; i++) <----,谁能给我解释一下这意味着什么?
// 信号线
for(i=0; i<limit; i++) <----,谁能向我解释一下这意味着什么?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。
} <----,谁能向我解释一下这意味着什么?
// 箭头
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = High+10*Point;
如果(Buffer1 Buffer2)
b3 = Low-10*Point; <---- 谁能向我解释一下这意味着什么?
谢谢大家=^_^=这很简单。
当你开始你的indi时,Bars=1000(例如),counted_bars=0。所以limit=1000,你的indi计算所有的1000条。之后counted_bars=1000,每一个新的tick indi只计算最后一个(零)bar。当下一个条形图出现时,limit=1,indi重新计算最后两个条形图。
b3=Low-10*Point;-它只是一条比条形图的最低点低10点的线。
你好,我是一个新的学习者,有兴趣学习mql,谁能告诉我如何在EA中编码?
extern int Fast.MA.Period = 5;
extern int Slow.MA.Period = 34;
Extern int Signal.period = 5;
//---- 缓冲区
double Buffer1[],
Buffer2[]。
b2[],
b3[];
//+------------------------------------------------------------------+
//|自定义指标初始化函数
//+------------------------------------------------------------------+
int init()
{
//---- 指标
// 两个额外的缓冲区用于计数
IndicatorBuffers(4);
IndicatorShortName("MA_5_34")。
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); //向下 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //向上 225 233 241
SetIndexBuffer(1,b3);
//这些缓冲区不会被绘制出来,只是用来确定箭头。
SetIndexBuffer(2,Buffer1);
SetIndexBuffer(3,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//|Custor指示器的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
双重MA5,MA34;
int limit=Bars-counted_bars;
Print(" print limit = ", limit);
if(counted_bars>0) limit++; <---- 谁能给我解释一下这意味着什么?
// 主线
for(i=0; i<limit; i++) <----,谁能向我解释一下这意味着什么?
{
MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。
MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i)。
Buffer1=MA5-MA34。
}
// 信号线
for(i=0; i<limit; i++) <----,谁能给我解释一下这意味着什么?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i)。
} <----,谁能向我解释一下这意味着什么?
// 箭头
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = High+10*Point;
如果(Buffer1 Buffer2)
b3 = Low-10*Point; <---- 谁能给我解释一下这意味着什么?
}
//----
return(0);
}
谢谢大家=^_^=如果你想在EA中使用这个指标,你可以使用icustom()函数 来访问它。你真的不需要了解指标的任何代码,只需要了解它所吐出的数据。至少这是最简单的方法。
如果你想在EA中使用这个指标,你可以使用icustom()函数来访问它。你真的不需要了解指标的任何代码,只需要了解它所吐出的数据。至少这是最简单的方法。
意思是说,在EA中使用函数 icustom()来调用indis? 在EA中应该如何编写编码? 能否给我一些指导?
谢谢
哇...
谢谢大家。
买入止损和卖出止损的情况如何?
只要把 "买入 "改为 "卖出 "即可?
我只想为1个货币对建立2个头寸,不要超过这个数目。
对不起,我还是个新手...
阅读此文
MQL4教程
这是正确的编码吗?
extern double TakeProfit=100;
extern double Lots=1;
extern double TrailingStop=35;
extern int ShortEma = 5;
extern int LongEma = 34;
//+------------------------------------------------------------------+
//| 专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //向上
如果(line1<line2)current_direction = 2; //向下
如果(current_direction != last_direction) //改变了
{
last_direction = current_direction;
return (last_direction);
}
否则
{
返回(0)。
}
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----
int total;
double shortEma, longEma;
shortEma = iCustom(NULL,0, "Test_Demo",13,0,0);
longEma = iCustom(NULL,0, "Test_Demo",54,0,0);
Print("shortEma = " + shortEma + " : longEma = " + longEma)。
int isCrossed = 0;
isCrossed = Crossed (LongEma,ShortEma);
total = OrdersTotal();
if(total < 1)
{
如果(isCrossed == 1)
{
1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green)。
如果(1>0)
{
if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES))Print("BUY order opened : ",OrderOpenPrice());
}
否则 Print("打开BUY订单错误。",GetLastError())。
return(0);
}
如果(isCrossed == 2)
{
2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red) 。
如果(2>0)
{
如果(OrderSelect(2,SELECT_BY_TICKET,MODE_TRADES))Print("Sell order opened : ",OrderOpenPrice());
}
否则 Print("打开卖出订单出错。",GetLastError())。
return(0);
}
return(0);
}
}
我得到一个错误,说1和2是意外的标记,这是什么意思?
谢谢
我猜你删除了一些东西,忘记了。
这是胡说八道。
extern double TakeProfit=100;
外置双数 Lots=1;
外置双数TrailingStop=35。
我得到一个错误,说1和2是意外标记,这是什么意思?
谢谢在OrderSend(....)之前删除1=,和2=。