どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 398

 
またコピーする。

取引条件を満たした場合に一度だけ取引を行うように、取引ロボットのコードの一部を記述する必要があります。
例えば、こんな感じです。
1) Line_1 が Line_2 よりも高ければ、買いを実行する。
2)SLまたはTPで取引を終了する。
3) Line_1 が Line_2 よりも高い場合、条件が変わるまで取引は行われません。

Line_2がLine_1より高いなど条件が変われば、取引が実行されます。そして、すべてが繰り返される。
1) Line_2 が Line_1 よりも高ければ、買いの取引を実行。
2) SLまたはTPで取引を終了する。
3) Line_2 が Line_1 よりも高い場合、条件が変わるまで取引は行われません。

と。
1) Line_1 が Line_2 よりも高ければ、買いの取引を実行..,
2) SLまたはTPで取引を終了する。
3) Line_1 が Line_2 よりも高い場合、条件が変わるまで取引は実行されない .

など
 
Link_x:
またコピーしています。

取引ロボットのコードの一部に、取引条件が成立した場合に一度だけ取引を行うようなコードを記述する必要があります。
例えば、こんな感じです。
1) Line_1 が Line_2 よりも高ければ、買いを実行する。
2)SLまたはTPで取引を終了する。
3) Line_1 が Line_2 よりも高い場合、条件が変更されるまで取引は実行されない .
...

など


(3)段落が不明確である。"・・・条件が変わるまで" - どのような条件を指しているのか、明記されていない。

買い注文を出すだけでいいのですか?また、市場に同時に複数の注文が存在するのか、1つの注文しか存在しないのかについても不明である。

 
fozi:

こんにちは、camradicsです。

MT4-5でSP500を取引できるのは誰ですか?


mmcisには_SP500のmt4デモがあります。

しかし、Trade: Noと書かれています。

もしかしたら、体験版だけかもしれませんが。

 
Link_x:
またコピーしています。

取引ロボットのコードの一部を書いて、取引条件が成立したら一回だけ取引するようにするのです。
例えば、こんな感じです。
1) Line_1 が Line_2 よりも高ければ、買いの取引が実行されます。
2)SLまたはTPで取引を終了する。
3) Line_1 が Line_2 よりも高い場合、条件が変わるまで取引は行われません。

Line_2がLine_1より高いなど条件が変われば、取引が実行されます。そして、すべてが繰り返される。
1) Line_2 が Line_1 よりも高ければ、買いの取引を実行。
2) SLまたはTPで取引を終了する。
3) Line_2 が Line_1 よりも高い場合、条件が変わるまで取引は行われません。

と。
1) Line_1 が Line_2 よりも高ければ、買いの取引を実行..,
2) SLまたはTPで取引を終了する。
3) Line_1 が Line_2 よりも高い場合、条件が変わるまで取引は実行されない .

など


考えてみて、わかったような気もするのですが、やはり自分の考えが正しいかどうか確認したいのです。

市場には常に1つの注文しかない。条件が変われば、常に買いだけの注文が開かれる。

 
khorosh:

(3)段落が不明確である。"・・・条件が変わるまで" - どのような条件を指しているのか、明記されていない。

買い注文を出すだけでいいのですか?また、市場に複数の注文が同時に存在するのか、1つの注文しか存在しないのかについても明らかではありません。

買うのも売るのも。
注文は1回のみ。

....
 
Link_x:
買うのも売るのも。1回のみの注文です。 ...



あなたの課題には売りとは一言も書かれておらず、どこもかしこも買いばかり です。
 
khorosh:
あなたの課題には、売りとは一言も書かれておらず、買いしか書かれていません。


私のミスです。直します。:)


1) Line_1 が Line_2 よりも高ければ、買い取引を行う。
2) SLまたはTPで取引を終了する。
3) Line_1 が Line_2 を上回っている場合、条件が変わるまで取引は行わない。

Line_2がLine_1より高いなど条件が変われば、取引が実行されます。そして、すべてが繰り返される。
1) Line_2 が Line_1 よりも高ければ、売りが実行されます。
2) SLまたはTPで取引を終了させる。
3) Line_2 が Line_1 よりも上にある場合、条件が変わるまで取引は行われません。

と。
1) Line_1 が Line_2 よりも高ければ、買いの取引を実行..,
2) SLまたはTPで取引を終了する。
3) Line_1 が Line_2 を上回っている場合、条件が変わるまで取引は行わない。
 
ビジュアルで解説します。
ファイル:
 
Link_x:

失敗しちゃった。直します。:)


1) Line_1 が Line_2 よりも高ければ、買いを実行する。
2) SLまたはTPで取引を終了する。
3) Line_1 が Line_2 を上回った場合、条件が変わるまで取引を行わない。

Line_2がLine_1より高いなど条件が変われば、取引が実行されます。そして、すべてが繰り返される。
1) Line_2 が Line_1 よりも高ければ、売りが実行されます。
2) SLまたはTPで取引を終了させる。
3) Line_2 が Line_1 よりも上にある場合、条件が変わるまで取引は行われません。

と。
1) Line_1 が Line_2 よりも高ければ、買いの取引を実行..,
2) SLまたはTPで取引を終了する。
3) Line_1 が Line_2 を上回った場合、条件が変わるまで取引を行わない。

int start()
  {
//----
   
   if(Lin1>Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_SELL)
           {
            OpenPosition("0",OP_BUY,NormalizeDouble(Ask-SL*Point,Digits),
                       NormalizeDouble(Ask+TP*Point,Digits), -1);
           }
        }                         
     }
   if(Lin1<Lin2)
     {
      if(!ExistPositions("0", -1, -1, 0))
        {
         if(OrdersHistoryTotal()<1 || GetTypeLastClosePos("0", -1)==OP_BUY)
           {
            OpenPosition("0",OP_SELL,NormalizeDouble(Bid+SL*Point,Digits),
                          NormalizeDouble(Bid-TP*Point,Digits), -1);
           }
        }                         
     }  
//----
   return(0);
  }
Чтобы код работал нужно ещё записать коды всех использованных функций KimIV вне тела функции start() и
определить все значения констант и переменных ошибки по которым будут выданы при компиляции ввиду 
того что здесь они не определены..

	          
 

皆さん、明けましておめでとうございます。幸せ、幸運、愛、そしてもちろん莫大な利益をみんなに!=))


専門家の方は、関数にエラーがないかを確認してください。この機能の主なポイントは、注文グリッドを閉じる場合に、次の新規注文が一定のポイント数でその損失をカバーするために必要なロットを計算することです。

double FindRightLot (int otype)
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2); // ТP это то к-во пунктов, за которое след. ордер должен закрыть убыток
           if (Lot>0) // т.е. нас интересуют только убыточные ордера
           {
             TotalLot=TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
           if (Lot>0)// выбираем только убыточные
           {
             TotalLot=TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }