[存档!]我将免费写一份顾问报告 - 页 13

 

你好!

有谁能知道如何在代码中正确地开出以下的处方。

一个指标MACD Histogramm WIS。直方图在其代码和彩条中计算,根据线的方向和过滤器macd的不同颜色。

int start()
{
int limit,i;
int counted_bars = IndicatorCounted();

if(counted_bars > 0) counted_bars--;
limit = iBars(NULL,0) - counted_bars;

BufferResize(Filter) 。
BufferResize(Histogram);

for(i = 0; i <= limit; i++)
MACD[i] = iMA(NULL, 0, FastMA, 0, MAMethod, MAAppliedPrice, i) - iMA(NULL, 0, SlowMA, 0, MAMethod, MAAppliedPrice, i) 。
for(i = 0; i <= limit; i++)
Signal[i] = iMAOnArray(MACD, iBars(NULL,0), SignalMA, 0, MAMethod, i);
for(i = 0; i <= limit; i++)
Histogram[i] = MACD[i] - Signal[i] 。
CalcFilter(Line, limit);
for(i = limit; i >= 0; i--)
{
if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1] )
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i];
}
if(Histogram[i] < Histogram[i+1] && Filter[i] < Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = Histogram[i];
HistogramBuy[i] = 0.0;
}
if((Histogram[i] >= Histogram[i+1] && Filter[i] <= Filter[i+1]) || (Histogram[i] <= Histogram[i+1] && Filter[i] >= Filter[i+1])
{
HistogramWaitClose[i] = Histogram[i];
HistogramSell[i] = 0.0;
HistogramBuy[i] = 0.0;
}
}

return(0);
}

我试图在专家顾问中规定其中一个条件,即在以下情况下向上开仓。

if(Histogram[i] > Histogram[i+1] && Filter[i] > Filter[i+1])
{
HistogramWaitClose[i] = 0.0;
HistogramSell[i] = 0.0;
HistogramBuy[i] = Histogram[i] 。

但我只需要比较2个关闭的条形图,即第一个和第二个(零点不接触),而不是所有的(i-bar),即需要比较第一个和第二个条形图,如果第一个条形图大于第二个,并且符合过滤器和EA的其他条件,就买入,反之就卖出....,如何正确规定,请指教,业余茶人)

谢谢你

 
kvg31:

我将写一个任何复杂的顾问。最主要的是要有一个好的想法。你将如何使用它,我不关心:将出售 - 我不介意(我不会要钱)。

P.S.如果你需要一个指标,你必须告诉我你想在哪个策略中使用它。


我对编程一无所知,我是一个初学者。

也许这个顾问已经有了,总的来说,是这样。

根据 "滚动 "的原则,两个EMAs的交叉点关闭前一个,打开一个新的,EMAs应该是可变的。

我认为在H1上,H4是相当相关的。

 
riabusha:


也许这样的EA已经存在,下面是它的工作原理。

根据 "滚动 "的原则,两个EMAs的交叉点关闭前一个,打开一个新的,EMAs应该是可变的。

我认为在H1上,H4是相当相关的。

是的,它是MT4软件包中包含的标准移动平均线。但它不是EMA,而是SMA(简单移动平均线),这并不能改变问题。当然,我们可以在我们的EA中改变MA的类型,甚至把它移到外部参数,但它不会成为圣杯。
 

你好。

请做一个简单的专家顾问,为一定数量的点打开一个订单,如果价格超过他们并在+方关闭,订单关闭并在+方打开。如果它处于负数位置,它就会反转到负数位置。

要设置的参数 - 批量的大小和要传递的点的数量。

事先非常感谢。

恭喜你,迪米特里。

 
kvg31:

我将写一个任何复杂的顾问。最主要的是要有一个好的想法。你将如何使用它,我不关心:将出售 - 我不介意(我不会要钱)。

P.S.如果你需要一个指标,你必须告诉我你想在其中使用它的策略。


亲爱的开发者们,你们好。请帮助我在SSL_fast_sBar_mtf指标基础上创建一个指标。

我想让它画出两把 "尺子",一把尺子的数值 "Lb "更大,另一把尺子的数值更小(或者说TIME FREAM更大和更小)。如果在酒吧里的颜色

如果两个 "标尺 "相同(而前一个标尺则不同),那么在下一栏的开始,你应该发出开仓信号(放置箭头)。

箭头应该使用指示器缓冲区 来绘制,而不是图形对象。在外部参数窗口中需要两个 "标尺 "的数据。

(用于进一步选择其参数)。

 

http://savepic.ru/1965498.gif

我不知道如何发送一个指标的链接。它在MQL4.com库中。

 

下午好!

非常多,我要求做一个专家(好在我不是一个程序员):()。

技术参数。
1)我们在4小时蜡烛图上通过穿越两条线移动 Average:一条(红色)周期为18,方法为指数 式,到收盘价,分别为(黄色)周期为8,方法也为指数,到收盘价

2) 交易量为1手

3)我们从交叉线到交叉线工作。只要黄线 在向上的方向(北方)与红线(红色)交叉,买入订单,第二次交叉线,黄线相应地从上面向下与红线交叉--固定开仓订单,同时开出新的卖出订单,以此类推。

4) 所有的交易都设置了35点的止损。

4小时图可以让你避免不必要的运动,不像小时图,工作起来是肯定的。

如果只是看货币对,这个想法是有道理的(没有亏损的交易,最差也是零左右),当然,应该考虑到趋势,在回看的时候使用专家顾问。以欧元/美元为例,如果9月1日我们在穿越+115点之前买入+139点,那么在10月12日穿越+1184点之前我们再次买入。就拿8月份同一张图片+368点销售来说,然后在同一水平上买入销售,没有任何损失,+181点下跌就卖出盈利。进一步说,例如黄金GOLD(佣金是70点,但每手的点数是2.5美元),于是从8月31日买入+1789点,一下子卖出+547点,买入+4557点,卖出0,+4328买入,卖出0,直到本周末又买入3636点。

问候,Yuriy

 
你好!伙计们,我搞不懂mql4((我想写一个基于两个EMA(移动平均线)的小EA,它在穿越后会发出提示音?你能告诉我关于这个项目的一些情况吗?提前感谢 !!!
 
silmin85:
你好!伙计们,我搞不懂mql4((我想写一个基于两个EMA(移动平均线)的小EA,它在穿越后会发出提示音?你能告诉我这个项目的一些情况吗?提前感谢 !!!
以软件包中包含的标准移动平均线 为基础,进行实验。你可以用EMA代替MA。
 
goldtrader:
以提供的标准移动平均线为基础,进行实验。你可以用EMA代替MA。
问题是,我想要一个简单的EA,每当它越过两个EMA时,就会发出哔哔声!MetaTradere有一个移动平均线.mq4的专家。

以下是完整的描述。

//+------------------------------------------------------------------+

//| 移动平均线.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp.
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#define MAGICMA 20050610

外置双Lots = 0.1。
外置双倍最大风险 = 0.02。
外置双倍的DecreaseFactor = 3;
外来的双倍MovingPeriod = 12;
外置双数MovingShift = 6;
//+------------------------------------------------------------------+
//|计算未结头寸|
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0。
//----
for(int i=0;i<OrdersTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
如果(OrderType()==OP_BUY) buys++;
如果(OrderType()==OP_SELL) sells++;
}
}
//---- 退货订单量
if(buys>0) return(buys)。
否则返回(-sells)。
}
//+------------------------------------------------------------------+
//|计算最佳手数|
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots。
int orders=HistoryTotal(); // 历史订单总数
int losses=0; // 亏损订单的数量,没有休息时间
//---- 选择地段大小
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1)。
//----,计算无休止的损失订单的数量
如果(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史中的错误!"); break; }
如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。
//----
如果(OrderProfit()>0),则休息。
if(OrderProfit()<0) losses++;
}
如果(损失>1)lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1)。
}
//----,返回地段大小
如果(lot<0.1)lot=0.1。
return(lot)。
}
//+------------------------------------------------------------------+
//| 检查未结订单的情况 |
//+------------------------------------------------------------------+
空白的CheckForOpen()。
{
双马。
int res;
//----,只为新酒吧的第一笔交易而去。
如果(Volume[0]>1)返回。
//---- 得到移动平均线
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0)。
//---- 卖出条件
如果(Open[1]>ma && Close[1]<ma)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,",MAGICMA,0,Red)。
返回。
}
//---- 购买条件
如果(Open[1]<ma && Close[1]>ma)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,",MAGICMA,0,Blue) 。
返回。
}
//----
}
//+------------------------------------------------------------------+
//| 检查平仓的条件|
//+------------------------------------------------------------------+
空白的CheckForClose()
{
双马。
//----,只为新酒吧的第一笔交易而去。
如果(Volume[0]>1)返回。
//---- 得到移动平均线
ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0)。
//----
for(int i=0;i<OrdersTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
如果(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) 继续。
//---- 检查订单类型
如果(OrderType()==OP_BUY)
{
如果(Open[1]>ma && Close[1]<ma) OrderClose(OrderTicket(),OrderLots(),Bid,3,White) 。
突破。
}
如果(OrderType()==OP_SELL)
{
如果(Open[1]<ma && Close[1]>ma) OrderClose(OrderTicket(),OrderLots(),Ask,3,White)。
突破。
}
}
//----
}
//+------------------------------------------------------------------+
//| 启动功能|
//+------------------------------------------------------------------+
空白启动()。
{
//---- 检查历史和交易情况
如果(Bars<100 || IsTradeAllowed()==false) 返回。
//---- 按当前符号计算未结订单
如果(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
否则CheckForClose()。
//----
}

//+------------------------------------------------------------------+

我如何在这里改变它,让它为我工作,我不明白!我不知道。我只想要50EMA和100EMA,并在每个路口发出提示音!!。

原因: