如何编码? - 页 152

 
m_43_62:

非常感谢所有的朋友

你不能把指标 作为顾问,你必须把顾问和指标一起使用,像这样。

P.S. 不要忘记把指标放到指标目录中。

附加的文件:
 

删除

--- 删除 ---

 

显示上次MA交叉后的天/小时的代码

我需要一个代码来显示上次两个MA交叉的时间(即多长时间以前)。它可以用天或小时来显示。

如果有任何帮助,我们将不胜感激。

托德

 

转换到市场执行

我有一个为Metatrader4的 "即时执行 "版本建立的EA,我需要有人修改代码,使其能在Metatrader4的 "市场执行 "版本上运行。 请将报价或任何问题电邮给我,phasna@gmail.com

谢谢

保罗

 

有谁知道在EA中为这个指标使用的icustom语句吗?

它只有一个缓冲区SetIndexBuffer( 0, TrStopLevel );用于尾部的点,箭头是由ObjectSet绘制的,你如何在icustom语句中拾取它?

MT4-LevelStop-Reverse-v2-1.mq4

附加的文件:
 
increase:
有谁知道在EA中为这个指标使用的icustom语句吗?

它只有一个缓冲区SetIndexBuffer( 0, TrStopLevel );这是用在尾部的点上,箭头是由ObjectSet绘制的,你如何在icustom语句中提取?

MT4-LevelStop-Reverse-v2-1.mq4

有没有人可以帮忙?

 

帮助我在点差之间进行交易!

好的,点差扼杀了一些货币对。但是否可以在点差中间进行交易?我有这样的代码,能不能把它改成以图表价格而不是买入价来修改订单?

void PlaceBuyOrder()

{

double BuyOrders, Lots;

double LowestBuy = 1000, HighestBuy;

如果(BarTime != Time[0])

{

BarTime = Time[0];

TickPrice = 0;

TradeAllowed = true;

}

RefreshRates()。

for (Order = OrdersTotal() - 1; Order >= 0; Order--)

{

如果(OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_BUY)

{

如果(OrderOpenPrice() < LowestBuy)LowestBuy = OrderOpenPrice();

如果(OrderOpenPrice() > HighestBuy) HighestBuy = OrderOpenPrice();

BuyOrders++;

}

}

}

如果(TradeAllowed)

{

如果 (Ask >= HighestBuy + (TrendSpacing * Point))

{

// 如果 (Multiplier)

如果(Multiplier == 1)

Lots = NormalizeDouble(LotSize * MathPow(LotIncrement, BuyOrders), 2);

否则

Lots = NormalizeDouble(LotSize + (LotIncrement * BuyOrders), 2);

}

如果(Ask <= LowestBuy - (Spacing * Point))

{

// 如果 (乘数)

如果(乘数==1)

Lots = NormalizeDouble(LotSize * CounterTrendMultiplier * MathPow(LotIncrement, BuyOrders), 2);

否则

Lots = NormalizeDouble((LotSize * CounterTrendMultiplier) + (LotIncrement * BuyOrders), 2);

}

如果(Lots == 0)

{

// 如果(乘数)

如果(乘数==1)

Lots = NormalizeDouble(LotSize, 2);

否则

Lots = NormalizeDouble(LotSize, 2);

}

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, TradeComment, Reference, Green)。

Error = GetLastError();

如果(Error != 0)

Write("错误打开BUY订单。" + ErrorDescription(Error) + " (C" + Error + ") Ask:" + Ask + " Slippage:" + Slippage)。

否则

{

TickPrice = Close[0];

TradeAllowed = false。

}

}

}

无效的PlaceSellOrder()

{

双重SellOrders, Lots;

double HighestSell, LowestSell = 1000;

如果(BarTime != Time[0])

{

BarTime = Time[0];

TickPrice = 0;

TradeAllowed = true;

}

RefreshRates()。

for (Order = OrdersTotal() - 1; Order >= 0; Order--)

{

如果(OrderSelect(Order, SELECT_BY_POS, MODE_TRADES))

{

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Reference && OrderType() == OP_SELL)

{

如果 (OrderOpenPrice() > HighestSell) HighestSell = OrderOpenPrice();

如果(OrderOpenPrice() < LowestSell)LowestSell = OrderOpenPrice();

SellOrders++;

}

}

}

如果(TradeAllowed)

{

如果 (Bid <= LowestSell - (TrendSpacing * Point))

{

// 如果 (乘数)

如果 (乘数 == 1)

Lots = NormalizeDouble(LotSize * MathPow(LotIncrement, SellOrders), 2);

否则

Lots = NormalizeDouble(LotSize + (LotIncrement * SellOrders), 2);

}

如果 (Bid >= HighestSell + (Spacing * Point))

{

// 如果 (乘数)

如果 (乘数 == 1)

Lots = NormalizeDouble(LotSize * CounterTrendMultiplier * MathPow(LotIncrement, SellOrders), 2);

否则

Lots = NormalizeDouble((LotSize * CounterTrendMultiplier) + (LotIncrement * SellOrders), 2);

}

如果(Lots == 0)

{

// 如果(乘数)

如果 (乘数 == 1)

Lots = NormalizeDouble(LotSize, 2);

否则

Lots = NormalizeDouble(LotSize, 2);

}

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, TradeComment, Reference, Red) 。

Error = GetLastError();

如果(Error != 0)

Write("错误打开卖出订单。" + ErrorDescription(Error) + " (D" + Error + ") Bid:" + Bid + " Slippage:" + Slippage)。

否则

{

TickPrice = Close[0];

TradeAllowed = false。

}

}

}

这是一些可以做的吗?

 

帮助~只有一个错误,用了3个小时仍然找不到它

我很担心,因为我找不到如何纠正下面的错误。

谁能告诉我哪里出错了吗?或者帮我调试一下,我已经附上了文件,见图~。

'end_of_program' - 不平衡的左括号 C:\Program Files\ MetaTraderexperts\scripts\delete_pending_SAM.mq4 (38, 2)

它是一个脚本文件~~

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

//| delete_pending.mq4|

//| Copyright ?2004, MetaQuotes Software Corp.|

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

#property copyright "Copyright ?2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

#property show_inputs

bool result;

extern double OverSymbolDel = 1; //0:FASLE ; 1: TRUE

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

//| 脚本 "删除挂单" |

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

int start()

{

for (int number=0; ( number <= OrdersTotal()+1); number++ )

{for (int times=0;( times <= OrdersTotal()+1); times++ )

{if(OrderSelect(number,SELECT_BY_POS,MODE_TRADES) )

{if((OrderType()==OP_BUY)||(OrderType()==OP_SELL)) break;

如果((OverSymbolDel ==0)&&(Symbol()==OrderSymbol()) delPending()。

如果 (OverSymbolDel ==1) delPending();

}

否则 Print("订单选择时出错", GetLastError() ) ;

}

}

}

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

空白的delPending()

{OrderPrint();

int ticket =OrderTicket();

result=OrderDelete(ticket);

if (result==False) Print("Error when delete Order" , GetLastError())。

}

附加的文件:
 

chiwing

试试这个。

#property copyright "Copyright ?2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

#property show_inputs

bool result;

extern double OverSymbolDel = 1; //0:FASLE ; 1: TRUE

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

//| script "delete pending order" |

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

int start()

{

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

{

OrderSelect(number,SELECT_BY_POS,MODE_TRADES);

if((OrderType()==OP_BUY) || (OrderType()==OP_SELL) ) continue;

if (OverSymbolDel ==0&& Symbol()==OrderSymbol() ) delPending();

if (OverSymbolDel ==1) delPending();

}

}

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

void delPending()

{

OrderPrint();

int ticket =OrderTicket();

result=OrderDelete(ticket);

if (!result) Print("Error when delete Order ", GetLastError() );

}
 
Roger09:
改为:如果((OrderType()==OP_BUY ||(OrderType()==OP_SELL)) countinue;。

试试这个。

#property copyright "Copyright ?2004, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net/"

#property show_inputs

bool result;

extern double OverSymbolDel = 1; //0:FASLE ; 1: TRUE

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

//| script "delete pending order" |

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

int start()

{

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

{

OrderSelect(number,SELECT_BY_POS,MODE_TRADES);

if((OrderType()==OP_BUY) || (OrderType()==OP_SELL) ) continue;

if (OverSymbolDel ==0&& Symbol()==OrderSymbol() ) delPending();

if (OverSymbolDel ==1) delPending();

}

}

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

void delPending()

{

OrderPrint();

int ticket =OrderTicket();

result=OrderDelete(ticket);

if (!result) Print("Error when delete Order ", GetLastError() );

}

谢谢你的帮助~~

我发现我的错误。

{if(OrderSelect(number,SELECT_BY_POS,MODE_TRADES) )

改为

OrderSelect(number,SELECT_BY_POS,MODE_TRADES)。

{if((OrderType()==OP_BUY)|| (OrderType()==OP_SELL) ) break;

改为

如果((OrderType()==OP_BUY)|| (OrderType()==OP_SELL) )继续计算。

原因: