[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 55

 
本業で使うUMPCを探しているのですが、このようなネットブックでMT4が動くかどうか教えてくださいhttp://cgi.ebay.com/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?pt=Laptops_Nov05&hash=item2c5a187610#ht_15003wt_1139 写真に撮るのは大変なので、リンクを貼っておきますね。
 
afirius:
本業で使うUMPCを探しています、このネットブックでMT4が動くかどうか教えてくださいhttps://www.mql5.com/go?link=https://www.ebay.com/itm/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?hash=item2c5a187610&pt=Laptops_Nov05[hash]ht_15003wt_1139 画像があまりにも多いので、リンクを貼っておきました。

はい
 
Sergstuddek:
こんにちは。すでに開いている(最後の)注文に対して、保留中の(ストップ)注文を開くためのコードを書いてください。 。


なるほど、これは名作ですね。:)

このようなコードになるはずです。

未決済注文がある場合は、その設定価格を算出します。そして、この価格にいくらかの距離(マイナスになることもある)を加えれば、保留中の注文が 設定される水準が得られるのです。そして、保留中の注文がないかを確認し、保留中の注文との距離が最小許容レベル以上であれば、そのレベルで保留中の注文を出します。これがそうです。このようなコードになるはずです。

要望は満たされていますか?

 
MT4テスターにテキストファイルなどで目的の最適化パラメータを入力することは可能でしょうか?
 
Sergey_Rogozin:
MT4テスターにテキストファイルなどで目的の最適化パラメータを入力することは可能でしょうか?
コードベースから自動最適化機能を探す
 

この記事でおなじみ、オートオプティマイザーを実行してみましたが、私にはうまくいきませんでした。

知識が足りないんです。

もっとシンプルなものがいい。

それにしても、ありがとうございます。

 
drknn:


定番中の定番ですね。:)

プログラミングコードはこのようになります。

未決済注文がある場合、その設定価格を計算します。そして、この価格に一定の距離(マイナスになることもある)を加えれば、保留中の注文が設定される水準となる。そして、保留中の注文がないかを確認し、保留中の注文との距離が最小許容レベル以上であれば、そのレベルで保留中の注文を出します。これがそうです。このようなコードになるはずです。

ご満足いただけましたか?

+10 良い釣竿がある...:)

その人は、このアルゴリズムを使ってコードを書き、このケースについて質問するか、あるいは、これはコードではなくアルゴリズムだと指摘し、既成の解決策を待つか...2つの展開が考えられるでしょう。:)

 
sergeev:

バイストップ/スレストップ注文が必要です

それとも既存の注文にストップロスが必要なのでしょうか?


最初の選択肢:保留中のbystop/sllestop注文。

私が見て理解できるように、テンプレートのような基本的なコードを書いてください。

 
drknn:


これは名作ですね。:)

プログラミングコードは次のようになります。

未決済注文がある場合、その設定価格を計算します。そして、この価格に一定の距離(マイナスになることもある)を加えれば、保留中の注文が設定される水準となる。そして、保留中の注文がないかを確認し、保留中の注文との距離が最小許容レベル以上であれば、そのレベルに保留中の注文を発注します。これがそうです。このようなコードになるはずです。

要望は満たされていますか?


上品なのは良いのですが、まだ問題があります)))

理論的には理解できても、実際にはできない。

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
// Суть советника в том что сначала он открывает первый ордер на покупку
// затем выставляет стопы в две стороны
// в одну сторону как продолжене уже открытого ордера
// в другую в два раза больше в случае разворота графика
// стопы выставляются по отношению к последнему открытому советником ордеру
// с каждым новым открытием нового отложеного ордера, все старые удаляються
// а ноые отложеные стопы уже открываются относительно нового открытого ордера.
#define MAGIC  20101012
extern double Lot=1;            // Размер лота
extern int TP=0;                // Тейкпрофит
extern int SL=0;                // СтопЛосс
extern int DS=0;                // Дистанция  для открытия ордера в противоположну сторону
int buys=0,sells=0;
int i=0;
//-----------------------------------------------------
void DeleteStopOrders()
{
  int res;
  for(int i=0;i<OrdersTotal();i++)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
    {
      if(OrderType()==OP_SELLSTOP)
        res=OrderDelete(OrderTicket());
      if(OrderType()==OP_BUYSTOP)
        res=OrderDelete(OrderTicket());
     }
  }
}
        
void OpenBuy()
    
   {
   int tickbuy2  =OrderSend(Symbol (), OP_BUY, Lot,  NormalizeDouble(Ask,Digits), 5, Ask-SL*Point,Ask+TP*Point, NULL, MAGIC, 0, Green); // покупка первого ордера при запуске советника
   }
//+------------------------------------------------------------------+
//| считаем количество открытых ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders1(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()==MAGIC)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}
//+------------------------------------------------------------------+
//| считаем количество отложеных ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders2(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()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)  buys++;
         if(OrderType()==OP_SELLSTOP) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}

int OpenStops()

{for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY)   // Проверка на то что открытый ордер на покупку
int ticket;
double LotSize=OrderLots();                                                                                 // Размер лота открытого ордера
double OpenPrice=OrderOpenPrice();                                                                          // Цена открытия открытого ордера
ticket=OrderSend(Symbol(),OP_SELLSTOP,LotSize*2,OpenPrice-DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);            // Открытие отложки на продажу в противополжну сторону до открытого ордера   
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,OpenPrice+TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_SELL)  // Проверка на то что открытый ордер на продажу
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,OpenPrice-TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера
ticket=OrderSend(Symbol(),OP_BUYSTOP,LotSize*2,OpenPrice+DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);            // Открытие отложки на покупку в противополжну сторону до открытого ордера
}
}
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  if (CalculateCurrentOrders1(Symbol())==0)
   OpenBuy();
  if (CalculateCurrentOrders2(Symbol())<=1)
  DeleteStopOrders();
  if (CalculateCurrentOrders2(Symbol())<=1)
   OpenStops();
//----
   return(0);
単純なEAであることは理解しているが、私はまだ旅を始めたばかりである))))、すでに問題がある。
 

インジケーターについての質問です。

インジケーターは、クロスインジケーターです。一方に多くの矢印を引き、もう一方に多くの矢印を引きます。最初に描かれるものだけを作る方法。コードにある方法で試しましたが、フレームを切り替えると変わってしまいます。

正しい方法を教えてください。

 for(int i=limit-1;i>=0;i--)
   {      
         if ( s == 0 &&    условие продажи)
               {Продажа[i] = High[i]+point*Point;            
                s=1; b=0;}               
      
         if (b == 0 &&     условие покупки)
        
          
              {Покупка[i] = Low[i]-point*Point; 
               s=0; b=1;}
   }