[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 611

 
Dimka-novitsek:

if(Stoch_1>Stoch_2) { flag1=1 ; Print (flag1,flag2,flag3,flag4); }


如果(Stoch_1<Stoch_2 && flag1==1) flag2=1; 打印(flag1,flag2,flag3,flag4); }

if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) {flag3=1; Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav"); }


如果(Stoch_1<Stoch_2 && flag1==1 && flag2==1 && flag3==1) flag4=1;
{打印(flag1,flag2,flag3,flag4);}。
如果(Stoch_1>Stoch_2 && flag1==1 && flag2==1 && flag3==1 && flag4==1)
{OrderSend (Symbol( ), OP_SELL, 0.01 ,Bid, 0, 0, NULL, 450, 0, CLR_NONE);
打印("OUT");}



flag1=0。
flag2=0。
flag3=0。
flag4=0。

了解到你会学习,为了学习你会写一些东西......在我看来,至少我把你的括号安排得很好,让它们发挥了作用。


尽管你的代码在编译器中出现了24个错误!!!但仍然感谢你的马虎帮助....。对于这个想法...(现在可以了--虽然我原则上也想这样做,但标点符号是个问题)
 

我再次想知道位置指数是什么。如果它是历史上的一个位置号,那么这个函数是做什么的?

GetIndexLastPos 最后开仓 的索引或-1 ? ?

最后一个开仓的指数总是1,因为它是最新的!!!。

我显然误解了INDEX....。

线索谁知道?

 
lottamer:

你认为应该如何比较?

让我们开始吧。

1.如果(Stoch_1>Stoch_2) flag1=1;,那么它后面的条件(Stoch_1<Stoch_2 && flag1==1)原则上不能为真,因为如果Stoch_1<Stoch_2 flag1==0,如果 flag1==1,那么Stoch_1>Stoch_2它与这个函数中的所有后续条件都是一样的,所以只有flag1可以改变值。也就是说,你的程序将执行前两行,跳过第三行,执行第四行,跳过第五行,执行第六行,执行第七行,而跳过其他所有行。


	          
 
xant:

TarasBY,

Var1和其他的名字都是我命名的,在init里面插入了fGet_MineGV()块,在staff里面插入了fSave_MineGV()块。

编译时,EA给出了一堆错误。

我一个接一个地试。首先我把它插入init里面,然后编译它。有0个错误,一个备注:未被引用,将从exp-file中删除。嗯,我觉得有道理,它找不到这个文件,因为它还不存在。它必须写在楼梯里。

因此,当我试图在楼梯内写第二个块时,它产生了很多错误。

结构算法。

int init()
{
    fGet_MineGV();
}
int start()
{
    fSave_MineGV();
}
double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

当然,你做了吗?而它却不能编译?

 
lottamer:

我再次想知道位置指数是什么。如果它是历史上的一个位置号,那么这个函数是做什么的?

GetIndexLastPos 最后开仓的索引或-1 ? ?

最后一个开仓的指数总是1,因为它是最新的!!!。

我显然误解了INDEX....。

线索谁知道?


最后打开的索引总是1,因为它是最新的!!。不是1,而是0,而且不在历史上。在历史上,0是最后关闭的头寸或最后删除的订单的指数,并不总是如此,因为除了市场,还有挂单,这不是头寸。
 
Profi,请告诉我如何以编程方式写下:"在SL水平上放置一个挂单,并考虑到点差的平仓单参数",并在EA的代码中附上它?
 
yosuf:
Profi教授,请告诉我如何编写以下程序:"在SL水平上放置一个包括点差在内的平仓订单参数的挂单",并在EA代码中的何处附加?

你不能用近似命令的参数来做。开盘价 也是一个参数。
 

塔拉斯比

是的,我按你写的做了。而且它不能编译。

很明显,我做错了什么,但我不知道具体是什么。你可以一步一步地走下去。

 
rigonich:

没有办法与要关闭的那个参数。开盘价也是一个参数。
为什么?例如,在O=1.2900,TP 1.300和SL 1.2800的情况下开了一个订单。挂单 的参数应该是BAY O=1.2800,TP 1.2900,SL 1.2700。如果可能的话,请考虑将其传播出去。
 
yosuf:
为什么?例如,BAY订单在O=1.2900处打开,TP为1.300,SL为1.300。挂单的参数应该是BAY O=1.2800,TP 1.2900,SL 1.2700。如果可能的话,请考虑将其传播出去。


第一个订单 开盘价 1.2900,目标价 为1. 300。这些是不同的参数。第一个BAY,第二个是 BAY_STOP这些也是不同的参数。而当你在SL上收盘时,你损失的不是点差,而是更多(点差+SL*点)。