[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 356

 

另一个问题,如何在MT4上添加指标?


谢谢

 
Garifyanov:

另一个问题,如何在MT4上添加指标?


谢谢

文档教程 没有帮助吗?
 
artmedia70:
文件教科书 没有帮助吗?


谢谢,我现在就去检查。
 
你好,我找不到一个能在已知时间蜡烛的高点、低点上画两天的水平线 的指标。请给我一个链接,或者是一个指标的概要。
 

你能告诉我为什么EA不交易了吗?把它放在演示上(微笑)--它不起作用。似乎已经删除了开始时只允许在测试时交易的功能。

外来的双倍Lots=1.0。

外部int Begin=10;

外部 inttern 长度=4。

外置 int EOD=24;

外部inttern Pips=5。

外来的int StopLoss=50。

外置 int BreakEven=30;

外部的TakeProfit=80。


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

//|专家启动功能|

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

int start()

{

//----

int i,Ticket,LastOrderTime,StartTime,EODTime,Bought=0, Sold=0;

Double EntryLong,EntryShort,SLLong,SLShort,TPLong,TPShort。

//设置

如果(Symbol()=="EURUSD"){

开始=10。

长度=4。

EOD=24。

点数=5。

StopLoss=50。

盈亏平衡=30。

TakeProfit=80。

}

否则,如果(Symbol()=="GBPUSD"){

开始=10。

长度=4。

EOD=24。

点数=5。

StopLoss=70。

盈亏平衡=40。

TakeProfit=120。

}

否则 {

开始=10。

长度=4。

EOD=24。

点数=5。

StopLoss=50。

盈亏平衡=30。

TakeProfit=80。

}


//计算时间

如果(Hour()>=Begin-1)

{

StartTime= StrToTime(Begin+":00")。

if(DayOfWeek()==5) EODTime = MathMin(StrToTime("22:55"),StrToTime(EOD+":00")) 。

否则EODTime = StartTime+(EOD-Begin)*3600-60。

}

//设置订单

如果(CurTime()>= StartTime && CurTime()<StartTime+300){

//确定范围

EntryLong =High[Highest(NULL,0,MODE_HIGH,Length*60/Period(),0)]+(Pips+MarketInfo(Symbol(),MODE_SPREAD) )*Point;

EntryShort =Low [Lowest (NULL,0,MODE_LOW, Length*60/Period(),0)] -Pips*Point;

SLLong =MathMax(EntryLong-StopLoss*Point,EntryShort)。

SLShort =MathMin(EntryShort+StopLoss*Point,EntryLong)。

TPLong =EntryLong+TakeProfit*Point;

TPShort =EntryShort-TakeProfit*Point;

//检查订单

for (i=0;i<OrdersTotal();i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。

如果(OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType() ==OP_BUY))买了++。

if(Bought>1){ //多于1个买入订单

如果(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

如果(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red) 。

如果(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket() 。

}


如果(OrderSymbol()==Symbol() && (OrderType()==OP_SELLSTOP || OrderType()==OP_SELL))成交++。

if(Sold>1){ //多于1个卖单

如果(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

如果(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) 。

如果(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket() )。

}

}

如果(Bought==0){ //没有买入订单

如果(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,EntryLong,3,SLLong,TPLong,NULL,0,0,Green) 。

如果(Ticket<0 && GetLastError()==130)

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SLLong,TPLong,NULL,0,0,Green) 。

GlobalVariableSet("LastOrderTime",OrderOpenTime())

}

if(Sold==0){ //没有卖出指令

如果(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,EntryShort,3,SLShort,TPShort,NULL,0,0,Green) 。

如果(Ticket<0 && GetLastError()==130)

Ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SLShort,TPShort,NULL,0,0,Green);

GlobalVariableSet("LastOrderTime",OrderOpenTime())

}

}

//管理已开启的订单

for (i=0;i<OrdersTotal();i++){

OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。

如果(CurTime()<=GlobalVariableGet("LastOrderTime")+10) Sleep(10000);

//uzavšenín pozic na konci dne

如果(CurTime()>=EODTime){

如果(OrderSymbol()==Symbol() && OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red) 。

如果(OrderSymbol()==Symbol() && OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red) 。

如果(OrderSymbol()==Symbol() && OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket() )。

如果(OrderSymbol()==Symbol() && OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket() )。

GlobalVariableSet("LastOrderTime",CurTime())。

}

如果利润>BE,//在BE处移动

否则 {

如果(OrderSymbol()==Symbol() && OrderType()==OP_BUY){

如果(High[0]-OrderOpenPrice()>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){

OrderModify(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0,Green) 。

GlobalVariableSet("LastOrderTime",CurTime())。

}

}

如果(OrderSymbol()==Symbol() && OrderType()==OP_SELL){

如果(OrderOpenPrice()-Low[0]>=BreakEven*Point && OrderStopLoss()!=OrderOpenPrice()){

OrderModify(OrderTicket(),OrderOpenPrice(),OrderTakeProfit(),0,Green) 。

GlobalVariableSet("LastOrderTime",CurTime())。

}

}

}

}

/在EOD时重置全局变量

如果(CurTime()>=EODTime) GlobalVariablesDeleteAll()。

return(0);

}

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

 
大家好,我安装了MT4 FIFTYZNAK,iMA指标给出了4位数字,但如何获得5位数字? 请帮助我理解。
 
MK07:
大家好,我安装了MT4 FIFTY-ZNAK,iMA指标给出了4个信号,但如何获得5个信号? 请帮助理解。

它有一个五位数的值。要看到 它的价值,请使用

string DoubleToStr(double value,int digits)

将一个数字值转换为一个文本字符串,其中包含一个指定精度格式的数字的字符表示。

参数。


value-浮点 值。

digits- 小数点后的位数(0-8)。


例子。
  string value=DoubleToStr(1.28473418, 5);
  // содержимое строки value - "1.28473"
 
laveosa:

罗马...很高兴见到你。试了一下,不起作用,不明白哪里出了问题,目测有上述时期的历史记录,但测试时却没有?:/

按F2键下载,直到你失去知觉为止!;))
 

你如何向程序表明条形图已经触及移动平均线? 你不需要一个最大值或最小值,你需要显示一个触摸。

 
Forexman77:

你如何向程序表明条形图已经触及移动平均线? 你不需要一个最大值或最小值,你需要显示一个触摸。

最高(当前)High[0]在MA之上,因此最低(当前)Low[0]在MA之下(据我所知,我们谈论的是第0条)。