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

 

みなさん、こんにちは。

取引報告書に入金ロードが正しく表示されないようなのですが。))私はこうしています。

#define RA 10000

if(Trade_Report == TRUE && !IsOptimization())
   {  int      pos;
      int      handle;
      int      Days;
      double   Swap_M;
      double   Profit_M;
      double   Swap_P;
      double   Profit_P;

      double   Source_LP[RA], LP_01[RA], LP_02[RA], LP_03[RA], LP_04[RA], LP_05[RA], LP_06[RA];
      double   Source_LP_02[RA], LP_01_02[RA], LP_02_02[RA], LP_03_02[RA], LP_04_02[RA], LP_05_02[RA], LP_06_02[RA];
      double   Source_SP[RA], SP_01[RA], SP_02[RA], SP_03[RA], SP_04[RA], SP_05[RA], SP_06[RA];
      double   Source_SP_02[RA], SP_01_02[RA], SP_02_02[RA], SP_03_02[RA], SP_04_02[RA], SP_05_02[RA], SP_06_02[RA];
      double   Load_Depo[RA]; 
   
      handle = FileOpen("OrdersReport.csv",FILE_CSV|FILE_WRITE);
   
      if(handle > 0)
                {//1
            FileWrite(handle,"Time Close"+","+"Lots"+","
                              +"Swap($)"+","+"Profit($)"+","+"Swap(p)"+","+"Profit(p)"+","+"Load Depo"+","
                              +"SOURCE_LP"+","+"LP#01"+","+"LP#02"+","+"LP#03"+","+"LP#04"+","+"LP#05"+","+"LP#06"+","
                              +"SOURCE_SP"+","+"SP#01"+","+"SP#02"+","+"SP#03"+","+"SP#04"+","+"SP#05"+","+"SP#06");
            for(pos = 0; pos < OrdersHistoryTotal(); pos++)
               {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY); //2
               
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_Source_LP && OrderCloseTime() == TimeCurrent()) { Source_LP[pos] = OrderProfit(); }
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP01 && OrderCloseTime() == TimeCurrent()) { LP_01[pos] = OrderProfit(); }
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP02 && OrderCloseTime() == TimeCurrent()) { LP_02[pos] = OrderProfit(); }
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP03 && OrderCloseTime() == TimeCurrent()) { LP_03[pos] = OrderProfit(); }
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP04 && OrderCloseTime() == TimeCurrent()) { LP_04[pos] = OrderProfit(); }
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP05 && OrderCloseTime() == TimeCurrent()) { LP_05[pos] = OrderProfit(); }
                  if(OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP06 && OrderCloseTime() == TimeCurrent()) { LP_06[pos] = OrderProfit(); }
                     
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_Source_SP && OrderCloseTime() == TimeCurrent()) { Source_SP[pos] = OrderProfit(); }
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP01 && OrderCloseTime() == TimeCurrent()) { SP_01[pos] = OrderProfit(); }
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP02 && OrderCloseTime() == TimeCurrent()) { SP_02[pos] = OrderProfit(); }
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP03 && OrderCloseTime() == TimeCurrent()) { SP_03[pos] = OrderProfit(); }
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP04 && OrderCloseTime() == TimeCurrent()) { SP_04[pos] = OrderProfit(); }
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP05 && OrderCloseTime() == TimeCurrent()) { SP_05[pos] = OrderProfit(); }
                  if(OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP06 && OrderCloseTime() == TimeCurrent()) { SP_06[pos] = OrderProfit(); }
                  
            //--- Вычисление загрузки депозита ---//
                  int              Amount_LD;
                  datetime         CurrentCloseTime = OrderCloseTime();
                  static datetime  CloseTime;                  
                  
                  if(CurrentCloseTime != CloseTime)
                     { Amount_LD = 1;
                       Load_Depo[pos] = (Amount_LD*(OrderLots()*1000)/AccountBalance())*100;
                       CloseTime = OrderCloseTime(); }
                  else if(CurrentCloseTime == CloseTime)
                          { Amount_LD++;
                            Load_Depo[pos] = (Amount_LD*(OrderLots()*1000)/AccountBalance())*100;
                            CloseTime = OrderCloseTime(); }
            //---------------------------------------------------------------------------------------------------------------------
                     
                  Swap_M     =  OrderSwap();
                  Profit_M   =  OrderProfit();
                  Swap_P     = (OrderSwap()/10)/OrderLots();
                  Profit_P   = (OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots();
                     
                  if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                     {   FileWrite(handle,TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES)+","+DoubleToStr(OrderLots(),2)+"," //3
                                          
                                          +DoubleToStr(OrderSwap(),2)+","+DoubleToStr(Profit_M+Swap_M,2)+","+DoubleToStr(Swap_P,2)+","
                                          +DoubleToStr(Profit_P,2)+","+DoubleToStr(Load_Depo[pos],2)+","
                                          
                                          +DoubleToStr(Source_LP[pos],2)+","+DoubleToStr(LP_01[pos],2)+","+DoubleToStr(LP_02[pos],2)+","
                                          +DoubleToStr(LP_03[pos],2)+","
                                          +DoubleToStr(LP_04[pos],2)+","+DoubleToStr(LP_05[pos],2)+","+DoubleToStr(LP_06[pos],2)+","
                                             
                                          +DoubleToStr(Source_SP[pos],2)+","+DoubleToStr(SP_01[pos],2)+","+DoubleToStr(SP_02[pos],2)+","
                                          +DoubleToStr(SP_03[pos],2)+","
                                          +DoubleToStr(SP_04[pos],2)+","+DoubleToStr(SP_05[pos],2)+","+DoubleToStr(SP_06[pos],2));  } //3
               }  FileClose(handle); //2
         }//1

そのため、初期状態では正しく計算されません。Load_Depo 配列の値は常に変化しており、オープンポジションも 考慮する必要があった。暇な人、例を見せてください。))

 
demlin:
正直、複雑でよくわからない)))
テストスクリプトの例も役に立たず?
 
FreeSerfer:

ありがとうございます。ポイントは明確です。プログラミング言語が苦手で申し訳ありません。

仮に

青色-番号0-買いシグナル

赤色-番号1-売り信号

もう一つの質問ですが、矢印はバーを形成している間に点滅し、その上にロックしてシグナルを与えることができます。シグナルが発生した後、取引を開始すること。

どなたかコードで実装していただけませんか?

プログラミングを勉強しているのか、それとも誰か代わりにやってくれる人を探しているのか?

iCustom()関数を使用することは、すでにVictor氏から説明されています。MetaEditorのヘルプをお読みください。そこにはかなり細かく書かれています。フラッター "を避けるために - iCustom()でゼロの代わりに最初のバーのデータを使用 - それはすでに完全に形成されている。

自分で何かを書き始めたら、ここで助けてもらったり、添削してもらったりすると嬉しいですね...。

 
artmedia70:

プログラミングを学んでいるのか、それとも誰か代わりにやってくれる人を探しているのか?

iCustom()関数を使う必要があることは、すでにビクターが明らかにしてくれています。MetaEditorのヘルプをお読みください。そこにはかなり細かく書かれています。チャター "を取り除くには、iCustom()でゼロバーの代わりに最初のバーのデータを使用します - それはすでに完全に形成されています。

自分で何かを書き始めると、ここぞとばかりに喜んで手伝ってくれ、何でも修正してくれる...。

自分で書いていて、大変ですが、あとはExpert Advisorとインジケータの結合だけですが、Victorさんのおかげですぐに自分の努力で解決できそうです。いずれにせよ、回答してくださった方、進むべき方向を示してくださった方、ありがとうございました。
 
peshihod:

選択肢は無数にありえます。シンプルなものを選ぶとよいでしょう。例えば、こんな感じです。


int Orderov;
int Tip;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int i,k;

Orderov=OrdersTotal();

for(i=0;i<Orderov;i++)
{
OrderSelect(i,SELECT_BY_POS);

switch( OrderType() )
{
case OP_BUY:
//Задача для ордера типа OP_BUY
break;

case OP_SELL:
//Задача для ордера типа OP_BUY
break;

case OP_BUYLIMIT:
//Задача для ордера типа OP_BUY
break;

/////------ и т.д.




}
}

return(0);
}

ヘルプ......質問に答える.............。

この部分は、ティック 毎にトリガーされる部分です

case OP_BUY:
//Задача для ордера типа OP_BUY
break;

case OP_SELL:
//Задача для ордера типа OP_BUY
break;


そしてそれは、新しい注文が開かれるたびに、一度だけ発動されるべきなのです。

ティックやマジコン、その他のオーダーの識別子によるカウンターを追加する必要があるのでは?

----------------------------------------------------------------------------------------

Orderovという変数を作る必要があるのでしょうか?
このようにしてもいいのでしょうか?

for(i=0;i<OrdersTotal();i++)

スクリプトに変数 "k "は必要ですか?

int i,k;

 
Zhunko:
テストスクリプトの例でも役に立たないと?
フィードバックありがとうございます。)
 
semiromid:

これは、ティック毎にトリガーされる部分です

case OP_BUY:
//Задача для ордера типа OP_BUY
break;

case OP_SELL:
//Задача для ордера типа OP_BUY
break;


そして、新しい注文が開かれるたびに一度だけトリガーされる必要があります。

ティックやマジックスなどのオーダー識別子で、カウンターを付けるべきかもしれませんね。

----------------------------------------------------------------------------------------

Orderovという変数を作る必要があるのでしょうか?
こんなやり方でいいのか?

for(i=0;i<OrdersTotal();i++)

スクリプトには変数 "k "が必要ですか?

勘違いしてますね。

単語も知らないのにドイツ語で詩を詠もうとする。自分が明確になっているか?

リファレンスを読み、言語の機能や特性をすべて学ぶ。2〜3ヶ月はかかりますよ。MetaTrader4 のインストールに含まれる例を使用してください。そして、話をする。まだ何の話かわからないでしょ。

 
peshihod:

勘違いしていますね。

一語も知らないのにドイツ語で詩を作ろうとすること。自分が明確になっているか?

リファレンスを読み、言語の機能や特性をすべて学ぶ。2〜3ヶ月はかかりますよ。MetaTrader4 のインストールに含まれる例を使用してください。そして、話をする。まだ何を言っているのかわからないでしょう。


私はプログラミングの初心者で、先生もいません。そして、私にとって重要な質問に答えることが難しいのであれば、何も書かなければよかったのです。

そして、私はあなたに向かって、実は......と言っているのです。

 
semiromid:


私はプログラミングの初心者で、先生もいません。私にとって重要な質問に答えることが難しいのであれば、何も書かなければよかったのです。

そして、私はあなたに向かって、実は......と言っているのです。


申し訳ございません。

陸上での泳ぎは身につかないということを書きました。

 
peshihod:


失礼します。

陸上での泳ぎは身につかないということを書きました。


時には、何かを理解するために質問しなければならないこともあります。

int Orderov;
int Tip;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int i,k;

Orderov=OrdersTotal();

for(i=0;i<Orderov;i++)
{
OrderSelect(i,SELECT_BY_POS);

switch( OrderType() )
{
case OP_BUY:
//Задача для ордера типа OP_BUY
break;

case OP_SELL:
//Задача для ордера типа OP_BUY
break;

case OP_BUYLIMIT:
//Задача для ордера типа OP_BUY
break;

/////------ и т.д.




}
}

return(0);
}

ヘルプ......質問に答える.............。

これが、すべてのティックの トリガーとなる部分です。

case OP_BUY:
//Задача для ордера типа OP_BUY
break;

case OP_SELL:
//Задача для ордера типа OP_BUY
break;


新しい注文が開かれるたびに、一度だけトリガーされるはずです。

ティックやマジックス、その他のオーダーの識別子、あるいは配列によるカウンターを付ける必要があるかもしれませんね。何が関係あるのかわからない、わからないと前に進めない。

----------------------------------------------------------------------------------------

Orderovという変数を作る必要があるのでしょうか?
このようにしてもいいのでしょうか?

for(i=0;i<OrdersTotal();i++)

スクリプトに変数 "k "は必要ですか?

int i,k;