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

 
Omm:

先物のデイトレードの時間帯はどのように決めればよいのでしょうか?

MarketInfo(Symbol(),MODE_STARTING)。

MarketInfo(Symbol(),MODE_EXPIRATION)です。

はゼロを返す


どのブローカー?

だから、まず、ブローカーに確認した方がいい。

 
alexey1979621:
フォーラムメンバーの皆様、Expert Advisorで価格がチャネルラインを超えた条件、例えば、価格がチャネルラインを上から超えて、取引が開始または終了した場合、どのように書けばよいのでしょうか?なお、このクロスオーバーの瞬間が気になるところです。喜んでお手伝いさせていただきます。

double price0=NormalizeDouble(ObjectGetValueByShift("NameYourChannelLine", 0),Digits));- バー0におけるあなたのラインの値です。

double price1=NormalizeDouble(ObjectGetValueByShift("NameYourChannelLine", 1),Digits));- バー1におけるあなたのラインの値です。

そして、ゼロバーでブレイクダウンの瞬間を判断する最も簡単な方法は、if(High[0]>price0 && High[1]<=price1) {ラインが上方に突き抜けた}、if(Low[0]<price0 && Low[1]>=price1) {ラインが下方に突き抜けた}となります。ブレイクした瞬間から現在のバーの終わりまで、ifがTRUEになります。チャンネルラインはOBJPROP_RAY==Trueの プロパティを持つことが望ましい

 
alexey1979621:
フォーラムメンバーの皆様、チャネルラインをクロスした場合、例えば価格が上からチャネルラインをクロスし、取引が開始または終了した場合、EAで条件を作るにはどうしたらよいでしょうか。なお、このクロスオーバーの瞬間が気になるところです。喜んでお手伝いさせていただきます。

いくつかの方法がある。

Ask >チャネルライン、Low[1] <=チャネルラインの場合、上方へクロス

ビッド<チャネルライン、高値[1]>=チャネルラインの場合、下方向にクロスする

ピリオド1でMAに確認することができます。

 
ソフトウェアで最後のCLOSED オーダーを選択し、そこから情報を取得するにはどうすればよいですか?
 
ご協力ありがとうございました

.質問の仕方を間違えたようです。コードの一部を添付すべきでした。訂正します。


が提案するように

artmedia70では、以下のように交差点が閉鎖されることを示しました。スクリーンショットにしたがって、取引を成立させる。しかし、十字架があるところで契約を結ぶ必要があります

void CheckForClose()
{
Double PriceHigh, PriceLow;
//---- 新しいバーの最初のティクスのみ取引に行く。
if(音量[0]>1) return;

PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0)です。
PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0)です。


for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) continue;
//---- チェックオーダータイプ
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
が壊れる。
}
if(オーダータイプ()==OP_SELL)
{
if(High[1]>=PriceLow && Bid<=PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
が壊れる。
}
}
//----
}

 
 
webip:
ソフトウェアで最後のCLOSED オーダーを選択し、そこから情報を得るにはどうすればよいのでしょうか?

好きなものを見つけてください。
 
alexey1979621:
ご協力ありがとうございました

.質問の仕方を間違えたようです。コードの一部を添付すべきでした。訂正します。


が提案するように

artmedia70では、以下のように交差点が閉鎖されることを示しました。スクリーンショットによれば、取引は成立している。しかし、十字架があるところで契約を結ぶ必要があります

void CheckForClose()
{
Double PriceHigh, PriceLow;
//---- 新しいバーの最初のティクスのみ取引に行く。
if(音量[0]>1) return;

PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0)です。
PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0)です。


for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) continue;
//---- チェックオーダータイプ
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
が壊れる。
}
if(オーダータイプ()==OP_SELL)
{
if(High[1]>=PriceLow && Bid<=PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
が壊れる。
}
}
//----
}

ExtremeTMA - Ungodly overdrawing.過去30小節、いやそれ以上の大きな歴史の塊です。Expert Advisorを書くのに使いましたが、最悪です。想像してみてください:シグナルが表示され、それに到達したが、しばらくしてシグナルが履歴に存在しなくなった - インジケータが再描画され、何も入力していないことがわかった。

クロスの判定に間違いがあります: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ...if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... と書くべきでしょう。そして、その逆を類推するために。

メッセージの入力ウィンドウの上部にあるパネルに、ボタンSRCの 付いたコードを挿入します。

ZZZY では、十字架のあるスクリーンショットはどこにあるのでしょうか?

 
artmedia70:

ExtremeTMA - 彼らはウンザリするほど過剰に引き出されています。そして、歴史の巨大な塊である過去30小節、いや、それ以上。Expert Advisorを書くのに使いましたが、最悪です。想像してみてください。シグナルを受信して、それを入力し、しばらくして履歴にシグナルが存在しなくなった。

クロスの判定に間違いがあります: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ...if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... と書くべきでしょう。そして、その逆を類推するために。

SZY コードは、テキスト入力ウィンドウの上部にあるパネルのボタン「SRC 」を押して貼り付けます。


修正しました。上のスクリーンショットと同じ方法で取引を終了し、赤い十字がある場所にあるはずです。

ExtremeTMAが再描画するのは同意しますが、エントリーポイントの検索には影響しないのでしょう、ここでのメインはフィルターです。TDIインジケーターを使用しました。私は手が器用ではないので、Expert Advisorは良いプロジェクト だと思います)。ただ1点、1年間テスターで5時間くらいかかるのが難点です(どこかで1つミスがあったようです)。エラーを探すのが困難でない場合。

extern double  Lots             = 0.1;
extern string Сomment           = "TMA Canal2";
extern int TakeProfit           = 20;     //тейкпрофит (отрицательное число или ноль чтобы не использовать);
extern int StopLoss             = 20;     // уровень Stop Loss для покупки;
extern int Slippage             = 2; // проскальзывание 
extern int Magic                = 124;

extern string  Indi             = "ExtremeTMALine";
extern string TimeFrame         = "current time frame";
extern int    HalfLength        = 56;
extern int    Price             = PRICE_CLOSE;
extern double ATRMultiplier     = 2.0;
extern int    ATRPeriod         = 100;
extern bool   Interpolate       = true;
extern double TrendThreshold    = 0.5;
extern bool   Distances         = false;


extern string  Indicatora       = "TradersDynamicIndex";
extern int RSI_Period           = 13;         //8-25
extern int RSI_Price            = MODE_CLOSE;           //0-6
extern int Volatility_Band      = 34;    //20-40
extern int RSI_Price_Line       = 2;      
extern int RSI_Price_Type       = MODE_SMA;      //0-3
extern int Trade_Signal_Line    = 7;   
extern int Trade_Signal_Type    = MODE_SMA;   //0-3
extern bool UseAlerts           = false;

double PriceHigh, PriceLow, SL, TP, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
int ticket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
      if (Digits ==3 || Digits ==3) // для пятизначного брокера
         {
            TakeProfit *= 10;
            StopLoss *= 10;
            Slippage *= 10;
         }
      return(0);
}


//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==124)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
   
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double PriceHigh, PriceLow, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
   int ticket;

//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
   
   PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0);
   PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
   TDIHigh = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 1, 0); // голубая
   TDILow = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 3, 0); // голубая 
   RSIPriceLine = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 4, 0); // зеленая
   TradeSignalLine = iCustom (Symbol(), 0, "TradersDynamicIndex", RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 5, 0); // красная
   
   
   if(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh && Ask<=PriceHigh || Ask>=PriceHigh && TDIHigh > 68 && RSIPriceLine < TradeSignalLine)  

     {
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"TMA Canal2",124,0,Red);
      return;
     }
//---- buy conditions
   if(Open[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow && Bid>=PriceLow || Bid<=PriceLow && TDILow < 32 && RSIPriceLine > TradeSignalLine)  

     {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"TMA Canal2",124,0,Blue);
      return;
     }
//----
  }

  //+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double PriceHigh, PriceLow;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
 
   PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0); 
   PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0); 
   
   
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Low[1]<=PriceHigh && Ask>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(High[1]>=PriceLow && Bid<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
   {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//----
  }
 
alexey1979621:

修正しました。上のスクリーンショットと同じ方法で取引を終了しましたが、赤い十字架があるべき場所にあります。

ExtremeTMAがオーバードローなのは同意しますが、エントリーポイントの検索には影響しないのでしょう、ここでのメインはフィルターです。TDIインジケーターを使用しました。私が作ったものを添付します(私の手がいかに醜いか、だからExpert Advisorは私の手のようなものなのです)。ただ1点、1年間テスターで5時間くらいかかるのが難点です(どこかで1つミスがあったようです)。エラーを探すのが困難でない場合。

まだ、エラーは探していません。

レッドクロスがあるところでSellを閉じるには、現在のバーで確認する必要があります。Ask<= クローズレベル && High[1]>クローズレベルの場合