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

 
rigonich:

ちなみに、この質問には長い間頭を悩ませましたが、結局分からずじまいです。テスターはどこでストッププレイの値を取得するのですか?実際の値をサーバーで変更できるのであれば、テスト結果はテストの時間に依存するはずですが、そうなっていないことを確認しました。それとも、シンボルのプロパティに格納されている値と、サーバーがリクエスト時に与える値は同じではないのでしょうか?
マーケット環境の変数は、サーバーの履歴フォルダーにあるsymbols.raw(推定)サービスファイルにあります。サーバーに接続されて いないときや週末は、端末はこのファイルから最後のデータを取得します。
 
xant:

リゴニッチ

これは何かの冗談か何かですか?どこで笑うの?

タラスバイ

できない?じゃあ、やるなよ。

いいか、このロップイヤーの変人!せっかく助けてもらったのに、既成のコードをExpert Advisorに持ち込むこともできないんだぞ!?しかも、口を開いてるだけ。バカに説明くらいできるだろ!?BY.
 

タラスバイ

動くなよ、クソ野郎お前こそ変人だ。だって、ロシア語では二言もまともに発音できないんだもの。

お前はアホか?まあ、拷問する必要はないんだけどね。少し休んでください。

 
TarasBY:
マーケット環境の変数は、サーバーの履歴フォルダにあるsymbols.raw(推定)サービスファイル内にあります。サーバーに接続されていない時や週末は、このファイルから最新のデータを端末に取り込みます。


ありがとうございます。
 
xant:

リゴニッチ

これは何かの冗談か何かですか?どこで笑うの?

タラスバイ

できない?まあ、そんなことはないでしょう。

ロシア語で書いてしまいましたが、教科書にはグローバル変数の宣言についてほとんど書かれていません。例えば、fGet_MineGV()が何なのか分からない。

機能なのでしょうか?もしそうなら、どんな効果があるのでしょうか?教科書でfGetを検索しても結果は0件です。

int init()では、何を宣言すればよいのでしょうか?と書かれていますね。

{
fGet_MineGV()。
}


私のEAでは、initの初期化は次のようになります。

int init()
{
ArrayInitialize(buf3,0)。
ArrayInitialize(b1,0)。
ArrayInitialize(b2,0)。
ArrayInitialize(b3,0)。
ArrayInitialize(b4,0)。


Comment("平均値を計算する "+ind);
m1=NormalizeDouble(iCustom(NULL,tf,ind+"_a",0,0),2)。
string d="平均値 "+ind+"+DoubleToStr(m1,2);
tm=TimeCurrent();
int q=0,ticket=-1;
double opr=0,lot1=0;
for(q=0;q<OrdersTotal();q++)
{

といった具合に、100行以上。どこに、どんな場所で、そして何より、ここで宣言すべきことは一体何なのか?ロシア語で書くのはそんなに難しいのでしょうか?指を曲げましょう、はい。

これは機能 なのでしょうか?その場合、どのような効果があるのでしょうか?教科書でfGetを検索しても結果は0件です。

はい、この機能は、チュートリアルが書かれた時点では利用できなかったので、チュートリアルに何も書かれていないはずです。これはユーザー定義関数で、あなたのために特別に書かれたものです。

      void fGet_MineGV (string fs_PrefName = ""// префикс имени переменной
       {
        string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
        if (GlobalVariableCheck (ls_Name)) SUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
        if (GlobalVariableCheck (ls_Name)) SUA1 = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
        if (GlobalVariableCheck (ls_Name)) BUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
        if (GlobalVariableCheck (ls_Name)) BUA1 = GlobalVariableGet (ls_Name);
        //----
    }
 
こんばんは!トレーリングストップは、注文を 出した直後に機能します。そして、チケットのついた注文が履歴に移り、TakeProfitで厳密に動くときだけ動くはずです。


//***************************************   
 
  nahodka=false;
 
 
 if (OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY))  
 if (OrderTakeProfit( )-3*Point<profitsell&&OrderTakeProfit( )+3*Point>profitsell) nahodka=true;
     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tecket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )>Bid+treylingstop*Point ){ Print ("четвёртаямодифи    " );
 OrderModify(  tecket, OrderOpenPrice(), Bid+treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
  // Модифицируем оставшийся ордер
 for ( i = OrdersTotal() - 1; i >= 0; i--)
 

リゴニッチ

最初の頃はそうしていました。このコードをinit関数内に挿入し、コンパイルしたところ、メモが表示されました。

関数「fGet_MineGV」は参照されていないため、Expファイルから削除されます。

この警告は、まだそこに記録がないから、何も読み取れないということで、はっきりしていますよね?

そのあと、関数のstartの中にコードの後半部分を書いています。このフラグメントは次のようになります。

void fSave_MineGV (string fs_PrefName = "") // 変数名プレフィックス
{
static datetime ldt_NewBar;
datetime ldaTBeginBar = iTime (Symbol(), 1, 0)
//---- 各分毎の先頭で保存する
if (ldt_NewBar == ldaTeginBar) return;
ldt_NewBar = ldaTBeginBar;
//---- 各変数の値を順番に保存
string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
GlobalVariableSet (ls_Name, SUA);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2")、
GlobalVariableSet (ls_Name, SUA1);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3")。
GlobalVariableSet (ls_Name, BUA);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
GlobalVariableSet (ls_Name, BUA1);
} 。

ここでいいんですか?

SUA、SUA1、BUA、BUA1の計算の直後に、この部分を挿入しています。

しかし、コンパイル時にExpert Advisorは次のような出力をします。

エラー27件、警告64件

 

xant:

リゴニッチ

最初の頃はそうしていました。このコードをinit関数内に挿入し、コンパイルしたところ、メモが表示されました。

関数「fGet_MineGV」は参照されていないため、Expファイルから削除されます。

この警告は、まだそこにレコードがないので、何も読み取れないということですよね?

そのあと、関数のstartの中にコードの後半部分を書いています。このフラグメントは次のようになります。

void fSave_MineGV (string fs_PrefName = "") // 変数名プレフィックス
{
static datetime ldt_NewBar;
datetime ldaTBeginBar = iTime (Symbol(), 1, 0)
//---- 各分毎の先頭で保存する
if (ldt_NewBar == ldaTeginBar) return;
ldt_NewBar = ldaTBeginBar;
//---- 各変数の値を順番に保存
string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1").
GlobalVariableSet (ls_Name, SUA);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2")、
GlobalVariableSet (ls_Name, SUA1);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3")。
GlobalVariableSet (ls_Name, BUA);
ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
GlobalVariableSet (ls_Name, BUA1);
} 。

ここで、すべて正しいですか?


関数の説明は、startにもiniteにも、他の関数にも配置できません。 別々に配置する必要があります。 EAの途中や、最初、最後には配置できますが、他の関数の中には配置できないようになっています。関数呼び出しは initの中だけにすればいい、一番最初に書いてもいい。

この発言は、まだレコードが作成されていないのだから、何もカウントされないのは明らかですよね?その通り、関数の記述がないため、コンパイラはあるべき場所、つまり実用的な関数の外を探しているのです。

{

fGet_MineGV();
}.

2番目の関数も同様です。これは「入門編」であり、プログラミングをやっている人が、たとえ初心者であっても知らないということは考えにくい。

 
Dimka-novitsek:
こんばんは!トレーリングストップは注文後すぐに機能します。そして、チケットのある注文が履歴に移動し、TakeProfitによって厳密に移動するときのみ動作するはずです。 。

しかし、履歴が空でない場合は、ほぼ確実にTake Profitで正確にトリガーされた注文を見つけることができます。どうやら、TPでクローズした注文の履歴を 検索しているのではなく、必要な注文がどのようにクローズしたか、クローズしたかどうかを履歴から確認しているようです。それを確認する必要があるのですが、なぜ注文の終値を正確に確認するのですか?3つのオプション - 1. 終値=0 - 注文が成行である場合、履歴に残らない(OrderSelect()はfalseを返す) 2.
オーダーテイクプロフィット()
-- 注文がストップ・プライスで 決済された場合、3.
オーダーテイクプロフィット(OrderTakeProfit)
-- 注文はストップで決済されませんでした。
 

リゴニッチ

また25歳。私は、最初の一歩が正しかったかどうか、具体的に尋ねました。直接的な質問には答えず、実質的なことは一言も言っていない。

はい、もちろん教科書は読みますが、プログラミングとは全く関係のない職業なので、わかりやすくシンプルで具体的なアルゴリズムを求めているのは明らかです。理解するのは難しいですか?実力で答えるのが難しいのであれば、なぜ悩むのか?立ち去るのみ。

そして、コメントですが、開業医の私がバカと言える人にどれだけ会ってきたかわかりません。大人が自分の健康についての基本的な疑問を理解できていないのは考えものです。もし私があなたのように誰にでも反応するのであれば、専門家としての価値はなくなるでしょう。よく眠ること。

_______________

お願い - 誰か私にneroy(dog)mail.ruでEAコードをぶっきらぼうに取って、必要なものを正しい場所に貼り付けることができる人を教えてください。