[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 279

 

ご存知のように、一連のローソク足には、新高値を追う線と安値を追う線があります。線と線の間の距離が50以上ある場合は、縦線を引く必要があります。縦線には、時間という座標が必要です。線間距離が50以上になる時の描き方を教えてください。自分では何も思いつかない。

ObjectCreateで 縦線を描きたかったのですが...。時間がなくてもできるのであれば、何を使うべきでしょうか?
 
waitra >> :

単純に「EAの履歴にまだ注文がない」ことを検出する機能はないでしょうか?- それで十分でしょう。

どうだろう。どなたか教えてください。

キムさんの機能を改造してみるのもいいと思います。これですね。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает количество позиций.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                            |
//|    sy - наименование инструмента   (""   - любой символ,  |
//|                                     NULL - текущий символ)          |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)               |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

つまり、MODE_TRADESの代わりに、MODE_HISTORYを取る - すなわち、注文がクローズされ、削除された注文の中から選択される。

それから(f-iの名前を変えて).

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает кол-во ордеровиз истории счета  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                           |
//|    sy - наименование инструмента   (""   - любой символ, |
//|                                     NULL - текущий символ)        |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfPos_HISTORY (string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;
  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )) {
      if (OrderSymbol()== sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op) {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}  return( kp);}

試してみてください。

 

こんにちは、友人たち。


アドバイスをお願いします。


例えば、「価格ローソク足」が移動平均線を 超えたら、ポジションを立てたいのですが。

今のところ、ローソク足が移動平均線の上で閉じたり開いたりしたときのシグナルの分類方法しか知らないのですが...。

( iMA( ......) >Close[1] or iMA( ......) >Open[0] )

現在のローソク足が閉じて次のローソク足が開くのを待つのではなく、すでにMAを上回っている/下回っている場合、どのようにエントリーすればいいのでしょうか?


ありがとうございました。

 
Morzh09 >> :

こんにちは、友人たち。


アドバイスをお願いします。


例えば、「価格ローソク足」が移動平均線を超えたら、ポジションを立てたいのですが。

今のところ、ローソク足が移動平均線の上で閉じたり開いたりしたときのシグナルの分類方法しか知らないのですが...。

( iMA( ......) >Close[1] or iMA( ......) >Open[0] )

現在のローソク足が閉じて次のローソク足が開くのを待つのではなく、すでにMAを上回っている/下回っている場合、どのようにエントリーすればいいのでしょうか?


どうしたらいいのかわからない。

いかがでしょうか。

iMA(...)>Open[0]?- ゼロは現在のロウソクです。

 
rid >> :

何が気に入らないのか。

iMA(...)>Open[0]?- 0は現在のローソク足

確かにそうですが、例えば、MAの下で始まった後、(大抵はニュースで)長いローソク足でMAを割って、上がったり下がったり・・・というケースもあります。

私の開封の基準では、このような動きを見逃してしまうかもしれません...。

そこで、今回のローソク足が閉じて次のローソク足が開くのを待つのではなく、現在平均値より上/下にある場合にポジションを持ちたいと思います。

 

これは、もしかしたら:

if (  iMA(.... .... , 1) >Close[1]  && iMA(.... ... , 0) < Open[0]  ) // продажа

(前バーのMAが前バー終値より大きく、今バーのMAが今バー始値より 小さくなれば売り)

 

2日間いじり倒したが、解けない。Kovalevのチュートリアルからコードを取って、買い注文を 開こうとしたら「Error 130」という答えが返ってきました。

コード

nt f_Open_Ord(int Tip)
{
int Ticket, // 注文番号
MN; // MagicNumber

double SL, // StopLoss(相対価格値)
TP; // TakeProf(相対価格値)
//-------------------------------------------- 3 --
while(g_Mas_Tip[Tip]==0) // as long as .
{ //...成功しない
if (SL<g_Level_new) // 許容値より小さい場合......。
SL=(g_Level_new+20); // ...なら許容範囲
if (TP<g_Level_new)
// 許容範囲より小さい場合....
TP=(g_Level_new+20); // .then allowable
MN=TimeCurrent(); // Simple MagicNumber
f_Inform(13,Tip); // Message on attempt to open
if (Tip==0) // Let's open 買おう
{
SL=Bid - SL*Point;// StopLoss (price)
SL=NormalizeDouble(SL,Digits);
TP=Bid + TP*Point; // TakeProfit (price)
TP=NormalizeDouble(TP,Digits);
Ticket=OrderSend(Symbol(),0,g_Lots_New,Ask,5,1.1); Ticket=OrderSend(Symbol_New),0,g_Lots_New,5,1.1), TP=NormalizeDouble(TP),5,5.1), 46500,1.47500,",MN);
err=GetLastError();
Comment("エラー番号 ",err);
if (Ticket>0) f_Inform(4);
//if (Ticket<0)f_Inform(25))です。

コードは修正され、すべて正常に動作しています。DC-Broco/。

 

ソーリ、早まったね。OrderSend関 数の値1.46500と1.47500をそれぞれSLとTPに変更する必要があります。

 
VNG писал(а)>>

ソーリ、早まったね。OrderSend 関数の値 1.46500 と 1.47500 は、それぞれ SL と TP に置き換える必要があります。

SLとTPは何を意味するのか?上のコードのように0であれば、すべてが正しい。エラーが発生するはずです

 

ストップはグローバル変数 g_Level_new から取得します。g_Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL )として計算します。