[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 298

 
アーカイブには2つのインジケータと私が開発しているExpert Advisor(test-cifr)が含まれています。インジケータはそれ自体で動作していますが、Expert Advisorにペーストできません(Expert Advisorの唯一の目的は値の出力です)、なぜできないのか、どうすればペーストできるのかご教示ください。
ファイル:
 
ありがとうございます、そして頑張ってください artmedia70
 
palomnik:
ありがとうございます、そして頑張ってください artmedia70
そうですね...健康:再生不可能な資源である。ありがとうございました :)
 
ed3sss:

こんにちは。

現在保有している注文の損益をチャートに表示するにはどうしたらよいですか?

Expert Advisor でポジションをオープンしたかどうか(ターミナルのオン/オフ)を確認し、ターミナルを閉じる前に最後のロット量をピックアップすることは困難である。

ありがとうございます。


こんにちは、関係者の方はいらっしゃいませんか?
 

過去のトレードがあれば、orderprofit関数を使って、トレードの履歴を すべて合計するんだ。

どなたか答えられる方はいらっしゃらないでしょうか。

 
artmedia70:

そのコードには1つだけ欠点がある。ここで、文脈を 無視して取り上げると


要は、表現が

そのため、ロット値は小数点以下第1位を四捨五入して表示します。


読んでみてください、役に立つかもしれません。



確かにそうだと思います。ありがとうございます。この点を補強するために、上記のスレッドを読み返してみます。隙間ができないように。
 
ed3sss:

こんにちは、どなたか詳しい方いらっしゃいませんか?


まあ、私が理解するところでは、すべてが初歩的なことなのですが。必要なのは初歩的な知識だけです。

1.オーバシュートをするんですね。

2.注文がオープンであること、すなわち注文の終了時間がゼロであることを確認します。

3.注文がオープンであれば、必要なデータ、利益、タイプなどを表示します。

 
palomnik:

過去のトレードがあれば、orderprofit関数を使って、トレードの履歴をすべて合計するんだ。

私の質問に誰か答えてくれる人はいないかしら。

Expert Advisorにコード全体をコピーします。

このように

//+------------------------------------------------------------------+
//|                                                        Xrust.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


extern int    TimeFrame=0;//Если=0, то текуший
extern string FrApNam="Ap";//Имя линии соотв.Фракталу вверх
extern string FrDnNam="Dn";//Имя линии соотв.Фракталу вниз
extern color  ClAp=Blue;//Цвет линии соотв.Фракталу вверх
extern color  ClDn=Red;//Цвет линии соотв.Фракталу вниз
//-----------------------------------------------------------------------------+
double FrApPrise,FrDnPrise;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  if(TimeFrame==0){TimeFrame=Period();}
  IndicatorShortName("Factal_Level_Xrust"+TimeFrame);
  FrApNam=StringConcatenate(FrApNam,TimeFrame);
  FrDnNam=StringConcatenate(FrDnNam,TimeFrame); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  ObjectDelete(FrDnNam);
  ObjectDelete(FrApNam);
  Comment(" ");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   LineAp();
   LineDn();
   
   int diap=MathRound((FrApPrise-FrDnPrise)/Point);
   
   Comment("\n"," LineDn  = ",FrDnPrise,
           "\n", " LineAp  = ",FrApPrise,
           "\n"," diap  = ",diap );

//----
   return(0);
  }
//+------------------------------------------------------------------+
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена      |   
//-----------------------------------------------------------------------------+
   void  LineDn(){
   FrDnPrise=0;
   double  FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
   FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
   //Comment(FrPrise);
   if(ObjectFind(FrDnNam)==0){
     if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){return;}}
   FrDnPrise=FrPrise;  
   ObjectDelete(FrDnNam);
   SetHLine(ClDn,FrDnNam,FrDnPrise,0,1);
   WindowRedraw();
   return;} 
//-----------------------------------------------------------------------------+
// Ищет горизонтальную линию по имени перерисовывает если изменилась цена      | 
//-----------------------------------------------------------------------------+
   void  LineAp(){
   FrApPrise=0;
   double FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
   FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
   if(ObjectFind(FrApNam)==0){
     if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){return;}}
   FrApPrise=FrPrise; 
   ObjectDelete(FrApNam); 
   SetHLine(ClAp,FrApNam,FrApPrise,0,1);
   WindowRedraw();
   return;}
//-----------------------------------------------------------------------------+   
//   Киму Респект и уважуха !!!                                                |       
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.03.2008                                                     |
//|  Описание : Установка объекта OBJ_HLINE горизонтальная линия               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    st - стиль линии                (0  - простая линия)                    |
//|    wd - ширина линии               (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetHLine(color cl, string nm="", double p1=0, int st=0, int wd=1) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_HLINE, 0, 0,0);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_COLOR , cl);
  ObjectSet(nm, OBJPROP_STYLE , st);
  ObjectSet(nm, OBJPROP_WIDTH , wd);
}

または

を使用するか、または関数を使用します。

int ObjectFind( string name) //Поиск объекта с указанным именем

double ObjectGet( string name, int prop_id) //Функция возвращает значение указанного свойства объекта

をクリックしてオブジェクトを探します。それ以外の方法はない。
 
いや、挿入されているのですが、その価値は完全に桁外れです。
 
palomnik:
いや、動くんだけど、天井から絶対値が出る


EAコード内のインジケータ 設定を削除してみてください。その後、インジケータに規定されているコードから設定を行います。

左の値も出ました、コードから設定を削除したらOKになりました。