何がいけないんですか? - ページ 3

 

このスクリプトがディールを開かず、エラー0を表示する、つまりエラーはないがディールを開けない理由を教えてください。

extern int MagicNumber = 10001;
extern double Lots = 0.1;
extern double StopLoss = 50;
extern double TakeProfit = 50;
extern int TrailingStop = 25;
extern int Slippage = 3;
//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+
int start()
{
  double MyPoint=Point;
  if(Digits==3 || Digits==5) MyPoint=Point*10;
  
  double StochMain = iStochastic(NULL,0,7,10,4,MODE_LWMA,1,MODE_MAIN,0);
  double StochSignal = iStochastic(NULL,0,7,10,4,MODE_LWMA,1,MODE_SIGNAL,0);
  double MaSi = iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0);
  
  if( TotalOrdersCount()==0 ) 
  {
     if((StochMain > StochSignal)&&(Close[1] > MaSi)) // Here is your open buy rule
     {
     OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask+StopLoss*MyPoint,Ask+TakeProfit*MyPoint,"Открыта сделка на покупку!!",MagicNumber,0,Yellow);
     }
     else
     {
        if(GetLastError() != 0)
        Alert("Ошибка ",GetLastError());
     }
  }
  
 
ストップロスが始値より 大きいのでは?
 
そう、そしてエラーはない。
 

この作品の仕組みが分からないので、解読の仕方を教えてください

    for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

そこでまず、変数cntに 0を セットします。

そして、注文数が 0を超えると、OrderSelectが発動する。

しかし、同じように値0の 変数cntは 何を担っているのだろうか。

 OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
 
機能について読むだけでも、すぐに理解できるはずです。
 

何も明らかにされていませんが、なぜ正確に0なのでしょうか?注文は0から始まるのですか、それとも何ですか?

そして、まだまだあります。

OrderType()<=OP_SELL

売り注文 以下であることを確認するにはどうすればよいですか?どっちが小さくてどっちが大きい?

 
sss2019:

何も明らかにされていませんが、なぜ正確に0なのでしょうか?注文は0から始まるのですか?

そうです、ゼロからです。

そして、まだまだあります。

売り注文以下であることを確認するにはどうしたらよいですか?どっちが小さくてどっちが大きいか、どうやってわかるんだろう?


OP_SELLが一定=1であるため
 

だから

OP_BUY - 0
OP_SELL - 1
op_buylimit - 2
OP_BUYSTOP - 3
op_selllimit - 4
op_sellstop - 5

ということですか?

 
sss2019:

だから

OP_BUY - 0
OP_SELL - 1
op_buylimit - 2
OP_BUYSTOP - 3
op_selllimit - 4
op_sellstop - 5

ということですか?


そうですね。本当は、6に等しい値がもう一つあるのです。
 
他に何かあるのでしょうか?