[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 175

 

こんにちは、コードがあれば教えてください。


OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер
if (OrderType()==OP_BUY||OP_SELL)
 {
 if (OrderMagicNumber()==1)
  {
  if (OrderProfit()<0)

   {

で、履歴の中で最後に利益がマイナスになった注文を選択することになります。

3つの注文が同時に終了した状況があった場合、最後の3つの注文が同時に終了したことを知るにはどうすればよいですか。

forループでやってみたのですが、損切りした注文を すべて見つけてしまいます。一方、一度に決済した注文の数に応じて、最後の注文か、最後の注文だけが必要です。

 
BruDer:

検索しても答えが見つからなかった

どのインジケータがチャート上にあるか、どのパラメータとインジケータがどのサブウィンドウにあるか、スクリプトからどのように確認できますか?

しゃい


まさかね。
 

vik-777:

過去3回が同時に終了したことを知るにはどうしたらよいですか?

OrderCloseTime()
 
vik-777:

こんにちは、コードがあれば教えてください。


で、履歴の中で最後に利益がマイナスになった注文を選択することになります。

3つの注文が同時に終了した状況がある場合、最後の3つの注文が同時に終了したことを知るにはどうしたらよいですか?

forループでやってみたのですが、損切りした注文をすべて見つけてしまいます。一方、一度に決済した注文の数に応じて、最後の注文か、最後の注文だけが必要です。




同じであれば、前回の決済した注文の決済時刻と比較する...。このように、当然ながら、最後に閉じたものから最初に閉じたものへと、次々と注文の締め切り時間を比較しながらループしていくわけですが...。もうひとつ、事前に知っている最後の注文の終了時刻を印刷する、例えば3つの注文とすると 同時に」と理解しても違うかも しれない、つまり私の理解では、注文はいつでも終了する、つまり実際には、例えば3つの注文が同時に閉まる時間は同じであるはずがありません - print() してみて、あなたの3つの TIME 注文の値 - OrderCloseTime() のそれらの値特性を確認してください、つまり、我々は、いくつかの注文が同時に閉まったと考えられるときに、いくつかの小さな 値による閉鎖時間の偏差、つまり、閉鎖時間の時間という概念を導入しなければならないかもしれません。ここから先は、ご自身で実験して確かめてください。
 

ホールの力を借りること。

OrderSelect()での 条件の書き方。

if(注文開始日 != 今日の日)ticket=OrderTicket().If(注文開始日 != 今日の日)ticket=OrderTicket();

 
if(TimeDay(OrderOpenTime())!=TimeDay(CurrentTime()))ticket=OrderTicket();
 
ikatsko:

ロングポジションの利益が出ている数と、ショートポジションの利益が出ている数を別々にカウントするにはどうしたらよいのでしょうか。

エキスパートアドバイザーの開始以来(またはより良い - アカウント全体の履歴のために)収益性の高いロングポジションの数がショートポジションの数よりも大きい場合、唯一のロングポジションが開かれるようにする必要があります。その逆も然り。

エキスパートアドバイザーによってクローズされた場合、これらの取引をカウントする方法は明確です:クローズ - カウントされました。しかし、TPやSLによってポジションがクローズされた場合、 ...?

もしかしたら、どなたかこの関数のコードを用意しているかもしれません。

クローズしたポジションの 終値、テイクとストップの価格をループで比較することができます。

OrderTakeProfit(); OrderStopLoss(); OrderClosePrice();

また、OP_BUYとOP_SELLを選択し、負けと利益のある買いポジションと売りポジションの数を4つの変数に書き込むとさらに簡単です。

if (OrderProfit()+OrderSwap()+OrderCommission()>0) { /* 位置は利益を上げている */ }
else { /* 位置は負けている */ }.

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

全部見たよ...、全部やったよ...。ポジションが 開かない!それだけです。ちゃんと閉まるけど、開かない...。どうしたらいいんだろう!もしかしたら、誰かがプログラムのバグを見つけるかも?

 
//+------------------------------------------------------------------+
//|                                                     DOKTRADE.mq4 |
//|                                                DOKSTER@YANDEX.RU |
//|                                                DOKSTER@YANDEX.RU |
//+------------------------------------------------------------------+
#property copyright "DOKSTER@YANDEX.RU"
#property link      "DOKSTER@YANDEX.RU"

   extern double LOT = 0.01;   // LOTS
   extern double KOF = 2;
   extern double SAF = 5;
   extern int    FRC = 144;
   extern double STL = 100;
   extern double TPF = 100;
   
   int start()
     
    { 


int CNT;

int DIG;

int TOTAL;
int SPREAD;

double SPR;
double SPRW;

double FRCU;
double FRCD;

double EMAH;
double EMAM;
double EMAL;

double OPEN;
double CLOSE;

double DFB;
double DFS;

double STLW = STL*Point;
double TPFW = TPF*Point;

double SAFW = SAF*Point;

EMAH = iMA(NULL,0,34,8,MODE_SMA,PRICE_HIGH,1);
EMAM = iMA(NULL,0,34,8,MODE_SMA,PRICE_MEDIAN,1);
EMAL = iMA(NULL,0,34,8,MODE_SMA,PRICE_LOW,1);

OPEN = iOpen(NULL,0,1);
CLOSE = iClose(NULL,0,1);

FRCU = High[iHighest(NULL,0,MODE_HIGH,FRC,1)];
FRCD = Low[iLowest(NULL,0,MODE_LOW,FRC,1)];

DFB = (CLOSE-FRCD);
DFS = (FRCU-CLOSE);

SPR = MarketInfo(Symbol(),MODE_SPREAD);
SPRW = (SPR*Point);

DIG = MarketInfo(Symbol(),MODE_DIGITS);

TOTAL = OrdersTotal();


if(TOTAL<1)

 { if (OPEN<EMAH&&CLOSE>EMAH)
   
   OrderSend(Symbol(),OP_BUY,LOT,Ask,3,0,0,"DOKTRADE",15775,0,Green);
  
 
   if (OPEN>EMAL&&CLOSE<EMAL)
 
   OrderSend(Symbol(),OP_SELL,LOT,Bid,3,0,0,"DOKTRADE",15885,0,Red);
  
  return(0);
 
    }
    
           
      
  for(CNT=0;CNT<TOTAL;CNT++)    
  
  {
      
  OrderSelect(CNT,SELECT_BY_POS,MODE_TRADES);
  
  {
  
  if (OrderType()==OP_BUY && OrderSymbol()==Symbol())   
                                             
      {
      
       if (OPEN>EMAL&&CLOSE<EMAL)    
     
        OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
        
         if (OPEN>EMAM&&CLOSE>EMAM)
          
           OrderModify(OrderTicket(),OrderOpenPrice(),FRCD-SAFW,CLOSE+DFB,Green);
        
        return(0);
        
        }
        
  if (OrderType()==OP_SELL && OrderSymbol()==Symbol())
        
      {
       
         if (OPEN<EMAH&&CLOSE>EMAH)
         
         OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
         
          if (OPEN<EMAM&&CLOSE<EMAM)
           
           OrderModify(OrderTicket(),OrderOpenPrice(),FRCU+(SAFW+SPRW),CLOSE-DFS,Red);
       
         return(0);
         
         }
          }
           }
            }