[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 386

 
splxgf писал(а)>>

可能是这样的,因为无限循环在现代硬件上需要很长的时间。

:)

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


#property copyright "Copyright © 2009, :-)"
#property link      "----"

#property indicator_separate_window

int start()
{
   string info = "Bid= "+DoubleToStr(Bid,5);
   IndicatorShortName( info);
//----
   return(0);
}

所以它将输出到你想要的窗口

 
Rita >>:

Добрый день.

В индикатоте есть ф-я IndicatorShortName("iC_C_mod, ..... ");

Мне, однако, нужно, кроме этой надписи, - чтобя я могла вставить коммент с динамично изменяющейся переменной в окно индикатора.

Типа ф-и Comment();

Но только, именно, в окно индикатора, а вовсе не на сам график.

Пож. подскажите ?


你可以创建一个标签并改变文本


   string ID  = "MyLabelName";


   if(ObjectCreate( ID, OBJ_LABEL, 0, 20, 20))
     {
       ObjectSet( ID, OBJPROP_XDISTANCE, 35);
       ObjectSet( ID, OBJPROP_YDISTANCE, 35);
     }
 
   //отображение на экране значения переменной txt 
   string txt = "Belissimo";
   ObjectSetText( ID, txt , 18, "Arial Black", Green);
代码可能是错误的,但它是有效的。
 
不要把它放在无人看管的地方
 
谢谢你, xeonsplxgf!
 
我的朋友们,下午好。

听你讲讲下面的问题会很有意思。

有一种观点认为,货币对的报价受到许多其他金融工具的影响:
领先的股票指数、期货、期权等的运动。


1) 你认为是否有可能追踪这种影响?
(并因此在交易策略中建设性地使用)?

2)你是否注意到相关货币对和其他金融工具的报价之间有任何持续的关联性?

3)你是否用指标来证明这种关联性?


(我在本论坛同名的主题分会中等待您的评论:https://forum.mql4.com/ru/28930 )

 

splxgf писал

void CheckSell()
{
if((NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
Sell();
}

可能是这样的,因为无限循环在现代硬件上需要很长的时间。


但随后该程序将只是检查条件,如果符合条件,它就会出售它。如果它不这样做,它将做什么?它应该在这个代码片段中等待条件的满足。



Vinin 写道


你为什么要做一个循环?如果没有条件,程序应该直接退出,而不是等待信号的出现。

这就是为什么我做了这个循环,因为在这个代码片段中,程序应该等待条件的出现。你不能退出到循环的起点。实现等待条件的正确方法是什么?


而这是我的设计。

void CheckSell()
{
while(!(NormalizeDouble(Price,Digits) < NormalizeDouble(MA10,Digits)))
{
Sleep(5);
RefreshRates();
}
Sell();
}


- 它是否在工作,只是挂起了测试器?还是根本就不工作?非常想了解如何在不退出给定函数的情况下正确地等待条件的满足。


谢谢你的回答!

 
Jahspear >>:


Но ведь тогда программа просто проверит условие и если оно выполняется, продаст. А если не выполняется, что она будет делать? По задумке, должна ждать выполнения условия именно в этом месте кода.


Вот поэтому и сделал цикл, что именно в этом месте кода программа должна ждать выполнения условия. Выйти в начало нельзя. Как правильно реализовать цикл ожидания условия?


- она рабочая и просто тестер вешает? Или не работает в принципе? Очень хочется понять, как правильно ожидать выполнения условия, не выходя из заданной функции.

程序最有可能工作,不退出函数而等待条件是错误的,至少在程序执行之前,测试者不会给出新的勾选。

如果条件没有得到满足,你应该终止程序,将控制权交给测试人员。过去的程序是线性的,因此会自我循环,并等待来自上面的信号。现在的程序是事件驱动的,当事件发生时,例如,一个新的tick,这个事件的处理程序是调用start(),在处理一个新tick的所有必要工作完成后,该函数必须终止,而不是作为一个调度器。

在start()中检查条件是正确的,条件来了,就做你的事,如果没有,就完成你的工作,等待下一个勾。我们已经为此调整了我们的逻辑。

 

还有一个问题。

该指标在一个单独的窗口中显示两个货币对的MA线。它工作得很好。

但当我在代码中插入一个条件时。

"如果在其中一个符号上错过了一个小节,那么在第二个符号上--这个现在的小节被跳过(不考虑)",像这样。

int start()
  {
     int limit;
     int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if( counted_bars<0) return(-1);
  //---- последний посчитанный бар будет пересчитан
     if( counted_bars>0) counted_bars-=10;
     limit=Bars- counted_bars;
  //---- основной цикл
ВОТ Я СТАВЛЮ ЭТО УСЛОВИЕ  :
    for( k = 0; k < iBars( Symbol_1,Period()); k++)   {  
    int symb2Shift = iBarShift( Symbol_2,Period(),iTime( Symbol_1,Period(), k),true);
    if( symb2Shift != -1)                            { 
//---------------------------------
    for( k=0; k< limit; k++)
       {
       Symbol1[ k]=     (iMA( Symbol_1,..... k)  ;
       Symbol2[ k]=     (iMA( Symbol_2,..... k)  ;           
       } 
                        }
                       }
//----
    return(0);
  }

然后mt4挂起了一分半至两分钟。然后指标开始工作,但它使用35-45%的内存。

原因是什么,请告知?

 

下午好!

你能告诉我如何写一个简单的指标,以突出某个条形(应在选项中设置),例如在12.30的垂直线,并在图表上标明一周的日子(例如在每天的哈姆上方的某个地方)?

谢谢!

原因: