[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 283

 
Shniperson:

你好!你能告诉我如何 "循环 "检查上/下栏吗? 也就是说,我怎样才能把这种情况描述得 "更短"?

Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3] &&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7]

bool Res=true;
for(int i=0;i<8;i++) Res = Res && Close[i]>Open[i];

提前感谢。


你可以这么做,但不可能更快。条件需要放宽一些
 

我不知道如何把这变成一种生活,我能做到吗?

我的策略最好是在终端8点手动开仓,如果盈利,则到第二天。如果利润没有向我的方向发展,那么在亏损时,我就反转头寸+--无论如何,我在这一天都不会开更多的头寸,而是等到早上8点钟。也就是说,最多只能有两个订单,不能再多了。如果我们没有达到盈利,但拖网移动到盈亏平衡点,我们也会翻转。当然,我们可以处理所有的事情,但我们的工作不允许我们监测位置。最好是下一个订单,让EA跟上这个位置。我附上了RSI,只是为了在策略测试器中测试它。

这就是我所需要的一切。

extern int Hour_To_Open = 08; //час открытия (-1 - не задано), терминальное время
extern int Minute_To_Open = 00; //минута открытия (-1 - не задано), терминальное время
extern double TakeProfit = 50;
extern double StopLoss = 30;
extern double Lot = 0.1;
extern int MagicNumber = 655433;


//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open)) 
{ //если настало время открытия сделок
int total = OrdersTotal();
for (int i = 0; i < total; i++) 
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
return(0);
}
} 
int ticket=1;
if(iRSI(NULL,0,14,PRICE_CLOSE,0)>iRSI(NULL,0,14,PR ICE_CLOSE,1))
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid - StopLoss * Point,Bid + TakeProfit * Point,"My order #",MagicNumber,0,Blue);
if(ticket<0)
{
Sleep(30000);
}
}
else
{
ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask + StopLoss * Point,Ask - TakeProfit * Point,"My order #",MagicNumber,0,Red);
if(ticket<0)
{
Sleep(30000);
}
}
} //end if((Hour()==Hour_To_Open) && (Minute()==Minute_To_Open))
//----
return(0);
}
//+------------------------------------------------------------------+

我有这个跟踪止损,我从另一个EA那里拿来的,但它对我不起作用。

extern bool UseTrailing = true; //включение/выключение T-SL
extern int TrailingStop = 50; // Фиксированный размер трала
extern int TrailingStep = 1; // Шаг трала

//+-------------------------------------------------------------------------------------------------------------------+
//| трейлинг стоп лосс |
void T_SL() {
int i=0;
for(i=0; i<OrdersTotal(); i++) {
if(!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue; 

if(OrderType()==OP_BUY) {
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits)) {
if(NormalizeDouble(OrderStopLoss(),Digits)<Normali zeDouble(Bid-(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid-TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TrailingS top*Point,Digits))
} //end if(OrderType()==OP_BUY)

if(OrderType()==OP_SELL) {
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its)) {
if(NormalizeDouble(OrderStopLoss(),Digits)>Normali zeDouble(Ask+(TrailingStop+TrailingStep-1)*Point,Digits))
OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask+TrailingStop*Point,Digits), OrderTakeProfit(), 0, CLR_NONE);
} //end if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TrailingStop*Point,Dig its))
} //end if(OrderType()==OP_SELL)
} //end for(i=0; i<OrdersTotal(); i++)
} //end void T_SL()
//| трейлинг стоп лосс |
//+-------------------------------------------------------------------------------------------------------------------+

我怎样才能附上它呢?而反转,在开仓后 应该只起一次作用。

 

逆转一定是在寻找这里的某个地方,我想是不是?

boolOrderCloseBy(int ticket, int opposite, color Color Color=CLR_NONE)
用同一仪器上开出的另一个头寸关闭一个未结头寸,但方向相反。在函数成功完成时返回TRUE。当函数失败时返回FALSE。要获得有关错误的信息,请调用GetLastError() 函数。
参数。
门票 - 要关闭的订单的唯一序列号。
相反地 - 相反的订单的唯一序列号。
颜色 - 图表上收盘箭头的颜色。如果缺少该参数或其值为CLR_NONE,则箭头不会显示在图表上。
例子。
 如果(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderCloseBy(order_id,opposite_id); return(0); }

 
专业人士先生,你能告诉我是否可以从工具栏上运行一个脚本?目前,写好的脚本必须从导航器中运行,或者用预设的组合键运行(由于某些原因,这只在一段时间内有效)。问题 - 是否可以,例如,从面板"图形工具"中指定一个新功能的图标,并从工具栏上运行脚本?也许还有其他选择?
 

下午好。

你能告诉我在哪里可以看到OrderSend() 函数的原始代码吗?

提前感谢。

 
kon12:
专家先生,请教,是否可以从工具栏上运行脚本?目前,该脚本必须从导航器中运行,或者使用预设的组合键(不知为何只能运行一次)。问题--例如,是否有可能为 "图形工具 "面板上的图标指定一个新功能,并从工具栏上运行脚本?还有其他选择吗?

没有,但你可以 标签对象的拖放作为例子......

下载 ,提取到终端,并进行替换,允许在终端设置中导入dll,将专家顾问附在 专家身上,输入要启动的脚本的名称,重新启动终端或进行编译

专家顾问实现--在图表上拖动对象时按其名称加载指定图表上的脚本。

      ServiceLoadScript(WindowHandle(Symbol(), Period()), "ZZ_All_Quotings 4.10425", /*<---- Имя загружаемого скрипта.*/  false);
附加的文件:
trade_1.mq4  2 kb
 

下午好!!!。

请告知。我正在编写一个在通道断裂 时工作的EA,在通道后面放两个待定的。当其中一个触发时,另一个应该被移除。如何在代码中实现它?

 
Parn25:

下午好!!!。

请告知。我正在编写一个在通道断裂时工作的EA,在通道后面放两个待定的。当其中一个触发时,另一个应该被删除。如何在代码中实现它?


也许这将是一个好主意--我自己没有做过--如果你的EA只允许一个市场订单(在之前下的2个挂单中),那么监测(跟踪)你的(魔术师)订单(市场)在市场中的可用性,一旦它出现,就删除挂单。这就是全部。如果你想删除一个待处理的订单,用谷歌搜索类似 "删除订单 site:mql4.com"。
 

你好!

在测试器上运行EA。服务器是四位数。当在日志中放置买入 或卖出订单 时,说

2011.10.23 15:27:26 2010.12.16 06:16 test_sovetnik GBPUSD,H1: open #1 buy 0.10 GBPUSD at 1.5551 sl: 1.4551 tp: 1.5586 ok

但开盘价为1.55512 !在五位数上。然后,挂单以四位数下单,也以四位数触发。但OP_SELL和OP_BUY的开盘价只有五位数!

我做了NormalizeDouble(Ask,Digits)。

没有什么是有效的!请告知如何解决这个问题?

当然,你可以忽略最后一位数字。错误并没有发生,但为了实验的纯粹性,我需要所有的交易都以四位数进行。

 
ZZZEROXXX:
请告知如何修复一个EA,例如标准的移动平均线,把它变成一个脚本,以便在非标准的时间框架上运行它。


如果你能告诉我如何将EA变成一个脚本,我将非常感激。

原因: