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

 

現在の価格や移動平均 線とトレンドラインを正しく比較する方法を教えてください。

よろしくお願いします。

    double maH_fast=iMA(NULL,fast_maH_timeframe,fast_maH_period,0,fast_maH_method,fast_maH_price,0);

    if (ObjectFind("Tr_S1")==-1)
     {
      Create_Tr_S("Tr_S1",White,timf2s,TF2S,timf1s,TF1S);
     }

    if(maH_fast>"Tr_S1")
     {...}
 
ikatsko:

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

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

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

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


int ProfitableOrdersOfLongs(){
   int i,Orders=0; 
   for(i=0;i<OrdersHistoryTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderType()==0)if(OrderProfit()>0) Orders++;              
    }  
return(Orders);} 
//====================================================================================================== 
int ProfitableOrdersOfShorts(){
   int i,Orders=0; 
   for(i=0;i<OrdersHistoryTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderType()=1)if(OrderProfit()>0) Orders++;              
    }  
return(Orders);} 
 
nemo811:

現在の価格や移動平均線とトレンドラインを正しく比較する方法を教えてください。

よろしくお願いします。

トレンドラインは、時間-価格座標を持つ始点と時間-価格座標を持つ終点があります。

同じ座標の直線方程式を使って、作図したセグメントのこの2つの座標の間にある任意の点の価格水準を求め、MAAの価格水準と目的のバーのクロス点をこの直線で比較すればよい...。

読む ことができます - そのような例の詳細な説明があります。

 
Roman.:

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

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

こんな感じでやりました

OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер 
tik=OrderCloseTime();
for (int l=OrdersHistoryTotal(); l>=0; l--) 
{
OrderSelect(l, SELECT_BY_POS, MODE_HISTORY);
if (OrderType()==OP_BUY||OP_SELL)
 {
  if (OrderMagicNumber()==1)
   {
   if (OrderProfit()<0)
    {
     if (OrderClosePrice()!= OrderStopLoss())
     {
     if (tik<=OrderCloseTime())
     {
 
vik-777:

ありがとうございます、うまくいきましたが、複数の注文が開くようになりました

こんな感じでやりました

問題解決です。 皆さん、ありがとうございました。

OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер 
tik=OrderCloseTime();
for (int l=OrdersHistoryTotal(); l>=0; l--) 
{
OrderSelect(l, SELECT_BY_POS, MODE_HISTORY);
if (OrderType()==OP_BUY||OP_SELL)
 {
  if (OrderMagicNumber()==1)
   {
   if (OrderProfit()<0)
    {
     if (OrderClosePrice()!= OrderStopLoss())
     {
     if (tik<=OrderCloseTime())
     {
     a = OrdersHistoryTotal();
     if (a>w)
     {
     if (sarik>0)
      {   
      OrderSend(Symbol(),OP_BUY,Lot1,NormalizeDouble(Ask,4),1,Ask - SL1*Point,Ask + 10*Point,0,2);
      w++;
      }
 
nemo811:

現在の価格や移動平均線とトレンドラインを正しく比較する方法を教えてください。

1. if(maH_fast>"Tr_S1") {...}.-- error: maH_fast is a real number, "Tr_S1"- value of string type;
2. doubleObjectGetValueByShift( string name, int shift)
指定したバー(現在のバーからオフセット)の価格値を計算し、返します。第1座標と第2座標に基づく一次式により、価格値を算出する。トレンド ラインに適用されます。
Parameters:
name - オブジェクト名。
shift - バーの数.
例:double price=ObjectGetValueByShift("MyTrendLine#123", 11)。
 
こんにちは!質問です!iHighestと iLowestは、ある期間のhigh/lowの最大値を持つバー番号を調べることができるとすると、st Devインジケータのあるバー数の最大値を調べるにはどうしたらいいでしょうか?
 
double maxdev,mindev=1;
for(int i=0;i<counbar;i>0)
{
double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,i);
if(mindev>val)mindev=val;
if(maxdev<val)maxdev=val;
}
Print("maxdev - ",maxdev," mindev - ",mindev);
こんなところにも。
 
7sintez:

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




5分足のEURUSDの注文を正しく開き、閉じることができます。修正に若干の問題があり、同じ値で修正しようとすることが多いため、エラーが多発する。
 

皆さん、こんにちは。初心者のためのヘルプをお願いします。

結論から言うと

1)期間は1日です。

2)OrderSend(...)のオープンオーダーがあります。SLとTPを搭載しています。しかし、ストップとロスの追加条件として、注文を開いた瞬間から18時間までライブに設定し、現在の 価格でクローズする必要があるのです。

つまり、3つの条件のうち1つを満たす必要があります。

1. ストップロスが発動される

または

2. テイクプロフィットがトリガーされる

または

3.ストップロスもテイクプロフィットも発動していないので、ポジションはその時点の価格でオープンしてから18時間後にクローズされます。

この時間条件を設定する方法を説明します、え?


質問2.

イベント発生条件(1日単位)の正しい表記方法。

- 現在のバーのCLOSEが直前のバーのCより大きく、かつ直前のバーのCより大きく、かつ直前のバーのCも直前のバーのCより大きい場合。


どうか、怒らないでください。以前はRumusに座っていたのですが、今、再構築中です...。