任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 52

 

大家好!今天刚开始学习这门语言。我不知道如何写出总是被检查的条件。

如果时间间隔t(由用户输入小数点后一位,如15.5秒)中的价格下降了n(由用户输入整数,如5),那么专家顾问就会开出卖出

谢谢你

 
大家好。需要一个高质量的随机报价生成器,至少是几何布朗运动类型或(理想的)))) Weierstrass-Mandelbrot函数与随机赫斯特指数。因为周末,我需要在一个价格系列上调试一个指标,所以出现了这个需求。如果没有iTicks脚本,我不会这么做。我已经尝试过了,或者我将不得不自己开发?在网站上搜索没有任何结果,但也许我正在寻找的东西只是被称为别的东西,而不是我正在寻找的关键词......
 
expmaestro:

大家好!今天刚开始学习这门语言。我不知道如何写出总是被检查的条件。

如果时间间隔t(由用户输入小数点后一位,如15.5秒)中的价格下降了n(由用户输入整数,如5),那么专家顾问就会开出卖出

谢谢你

这里是 那个算法。从例子中学习。
 
谢谢,我会想办法的。 我希望这真的是我需要的。
 
expmaestro:
谢谢,我会想办法的,希望真的是我所需要的。

我确信Lucky是基于这一原则,但事实证明并非如此。那就试试这样的计划吧。

extern int ShiftSec = 15;
extern int ShiftPips = 10;
//IIIIIIIIIIIIIIIIIII======Глобальные переменные советника======IIIIIIIIIIIIIIIIIIIIII+
datetime   gdt_NewTime;
double     gda_Price[0][2];
int        gi_size;
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert initialization function                            |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void init()
{
//----
    gi_size = 0;
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert deinitialization function                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void deinit()
{
//----
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                  Custom expert iteration function                                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void start()
{       
//----
    if (gdt_NewTime == TimeCurrent()) return;
    gdt_NewTime = TimeCurrent();
    if (gi_size < ShiftSec) {ArrayResize (gda_Price, gi_size + 1); gi_size++;}
    else
    {
        //---- Это схема к которой нужно добавить управление ордерами
        if (gda_Price[0][0] - Bid > ShiftPips * Point)
        //---- Открываемся BUY
        if (Ask - gda_Price[0][1] > ShiftPips * Point)
        //---- Открываемся SELL
        //---- Сдвигаем массив цен на 1 вниз
        double lda_tmp[][2];
        ArrayResize (lda_tmp, gi_size);
        ArrayCopy (lda_tmp, gda_Price);
        int li_IND0, li_IND1;
        for (li_IND0 = 0; li_IND0 < gi_size - 1; li_IND0++)
        {
            for (li_IND1 = 0; li_IND1 < 2; li_IND1++)
            gda_Price[li_IND0][li_IND1] = lda_tmp[li_IND0+1][li_IND1];
        }
    }
    //---- Собираем цены
    gda_Price[gi_size-1][0] = Bid;
    gda_Price[gi_size-1][1] = Ask;
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
你需要检查该代码是否有效。时间间隔是以1秒的倍数计算。缩短时间间隔并不是由我决定的。
 

你能告诉我如何在图表上实现热键吗?这样你就可以改变EA中的参数值--这可能吗? 我需要做什么?

假设变量类型是bool--如果我理解正确的话,每个变量你只需要2个键:你将得到TRUE FALSE

 

我需要使用同一个函数,但用不同的变量来计算两个类似数组的单元格值。这些数组是一维的。

我如何编写这样的函数?这有可能吗?

Расчет_Массива(Массив_1, 5.0, 6.0);                       // Вызов функции

void Расчет_Массива(double array[], double A, double B)   // Сама функция
  {
   for (i=0; i<10; i++)
     {
      array[i]= A+B*i;
     }
  }

还有,是否可以用更多的多维 数组做同样的事情?- 2,3维。

--------------

我加了一个逗号(&)。

void Расчет_Массива(double& array[], double A, double B)   // Сама функция

它的作用...: )))只是我不知道它是干什么用的--只是通过类比(量具法)试了一下。如果你能告诉我,我很想知道。: ))

 
Chiripaha:

你能告诉我如何在图表上实现一个热键吗?这样你就可以改变EA中的参数值--这可能吗? 你需要做什么?

假设变量的类型是bool--如果我理解正确的话,那么在一个变量上只需要两个键:你将得到TRUE FALSE

图书馆 能提供帮助吗?

 // 2.2.3. Функция управляет горячими клавишами терминала МТ4.
 void ServiceMetaTraderHotKeys(int nKeyMode, // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                             // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                               int nKey);    // Код дополнительной клавиши.

 // 4.1.2. Функция управляет горячими клавишами на указанном графике.
 void ServiceChartHotKeys(int hwndChart, // Системный дескриптор окна, на котором применяются горячие клавиши.
                          int nKeyMode,  // Код клавиши-модификатора. Может быть только предопределённым значением из:
                                         // VK_SHIFT, VK_LSHIFT, VK_RSHIFT, VK_CONTROL, VK_LCONTROL, VK_RCONTROL, VK_MENU, VK_LMENU, VK_RMENU, VK_LWIN, VK_RWIN.
                          int nKey);     // Код дополнительной клавиши.
这些是新版本中的描述。参数在储蓄罐中的排列方式不同。
 
Zhunko:

也许图书馆 可以提供帮助?

这些描述来自新版本。储蓄罐有不同的参数。

是的,瓦迪姆,我在写这个问题的时候正好在看你的图书馆。而我在半年多前就下载了它(昨天也看了新的)。我只是不知道如何使用它,这就是为什么我问 "如何做"--像一个小例子。因为我可以自己带着函数到数组中去,但在这里我发现以我目前的编程技巧水平有点难猜。