[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 65 1...585960616263646566676869707172...631 新しいコメント 削除済み 2012.04.11 06:15 #641 ロール さん、ありがとうございます。ここに、チャートの 左下にコメントを表示する機能がありますので、必要な方がいらっしゃいましたら、ご利用ください。 void mycomment(color c,string mytext) { string name="mycomment"; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet("mycomment", OBJPROP_CORNER, 2); ObjectSet(name,OBJPROP_XDISTANCE,5); ObjectSet(name,OBJPROP_YDISTANCE,7); ObjectSetText(name,mytext,12,"",c); } neo333 2012.04.11 07:49 #642 ファイルを開く→目を通す→ファイルを 閉じるという1つのスクリプトで、ファイルを再び開く方法を教えてください。ファイルを再び開こうとすると、「ファイルの終わり」と表示されます... Alexandr Shelegeda 2012.04.11 08:59 #643 こんにちは、この問題に遭遇した人がいたら教えてください。 通貨チャートのウィンドウで、時々チャート自体が消えてしまいます。 その後、リフレッシュと表示され、すべてが復元されます。このとき、エキスパートアドバイザーが正しく動作しない(無条件で取引を開始する)ことがあります。今日も最大ロットで取引開始。私はそれに気づき、2.5ポイントの損失で決済しました。以下は、ロットを決定するためのコードです。これは、最後の2行のせいではないか、と思うのです。でも、どうやって?//======================================================================== //определение лота //======================================================================== double Free =AccountFreeMargin(); double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED); double Step =MarketInfo(Symbol(),MODE_LOTSTEP); double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT); double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT); LOT=NormalizeDouble(AccountFreeMargin()*RISK/100000,2); if (LOT*One_Lot > Free) // Не хватает даже.. { // ..на минимальн. лот:( Comment("денег нет " ); return(0); // ..и выход } else Comment("деньга есть " ); if(LOT<Min_Lot) LOT=Min_Lot; if(LOT>Max_Lot) LOT=Max_Lot; далее открытие ордера по условиям. Artyom Trishkin 2012.04.11 10:55 #644 Lians:みなさん、こんにちは。のように、グラフ上にテキストを表示することは可能かどうか教えてください。を別の関数として出力し、このように呼び出すことができます。この機能を見てください。 //+----------------------------------------------------------------------------+ void iPrint(bool print, string mess1, string mess2="", string mess3="", string mess4="", int sz=9, color cl1=Aqua, color cl2=Aqua, color cl3=Aqua, color cl4=Aqua) { string NameGrafText, message, nm; int i, y, k, LenStr, shift, Win_Num=-1, num=0; color cl; if (mess1=="") { Print("Func iPrint: Передана пустая строка, выходим"); return; } Win_Num=WindowFind("Win_Inform"); if (print || Win_Num<0) { message=mess1+mess2+mess3+mess4; Print(message); return; } k=ArraySize(Mass_Name_Message)-1; if (StringLen(mess1)>0) num++; if (StringLen(mess2)>0) num++; if (StringLen(mess3)>0) num++; if (StringLen(mess4)>0) num++; for (i=k; i>=0; i--) { NameGrafText=Mass_Name_Message[i]; if (StringLen(NameGrafText)>0) if (ObjectFind(NameGrafText)==Win_Num) { if (i+num>k) { ObjectDelete(NameGrafText); Mass_Name_Message[i]=""; } else if (i+num<=k) { Mass_Name_Message[i+num]=Mass_Name_Message[i]; y=ObjectGet(NameGrafText, OBJPROP_YDISTANCE); // координата Y ObjectSet (NameGrafText, OBJPROP_YDISTANCE, y+(sz+1)*num); // координата Y ObjectSet (NameGrafText, OBJPROP_COLOR, LightSeaGreen); // цвет } } } shift=num; int v=GetTickCount(); for (i=0; i<num; i++) { shift--; NameGrafText=Prefix+"_Graf_Text_"+i+"_"+sy+"_"+v; int app=0; while (ObjectFind(NameGrafText)==Win_Num) { app++; NameGrafText=Prefix+"_Graf_Text_"+i+"_"+sy+"_"+v+"_"+app; } Mass_Name_Message[num-1-i]=NameGrafText; switch (i) { case 0: message=mess1; cl=cl1; break; case 1: message=mess2; cl=cl2; break; case 2: message=mess3; cl=cl3; break; case 3: message=mess4; cl=cl4; break; default:message=mess1; cl=cl1; break; } ObjectCreate (NameGrafText, OBJ_LABEL, Win_Num, 0, 0); ObjectSetText(NameGrafText, message, sz, "Courier New", cl); ObjectSet (NameGrafText, OBJPROP_COLOR, cl); // цвет ObjectSet (NameGrafText, OBJPROP_CORNER, 2); // угол ObjectSet (NameGrafText, OBJPROP_XDISTANCE, 150); // координата Х ObjectSet (NameGrafText, OBJPROP_YDISTANCE, 2+(sz+1)*shift); // координата Y WindowRedraw(); } return; } //+----------------------------------------------------------------------------+ チャート上に空のWin_Informインジケータウィンドウを探し、存在すればその中にメッセージを表示します。そうでない場合は、printで出力します。 コール例 //------------------------------------------------------- message1=StringConcatenate("Тик: ",GetTickCount()," "); message2=StringConcatenate("Цена Bid: ", DoubleToStr(Bid,dg)); iPrint(false, message1, message2, "", "", 9, Aqua, DarkOrange); b=4; c=7; a=b+c; message1=StringConcatenate("a=",a," "); message2=StringConcatenate("b=",b," "); message3=StringConcatenate("c=",c); iPrint(false, message1, message2, message3, "", 9, Aqua, LimeGreen, DarkOrange); message1=StringConcatenate("Время: ", TimeToStr(TimeCurrent())," "); message2=StringConcatenate("Тик: ",GetTickCount()," "); message3=StringConcatenate("Время бара: ",TimeToStr(Time[0])," "); message4=StringConcatenate("Цена Bid: ", DoubleToStr(Bid,dg)); iPrint(false, message1, message2, message3, message4, 9, Aqua, Aqua, Aqua, DarkOrange); //------------------------------------------------------- グローバルレベルで宣言された配列文字列 Mass_Name_Message[10] を使用します。オブジェクト名を格納するための配列である。用途に合わせて大きさを変えることができます。Prefix変数には、グラフィカルなオブジェクトを 正しく扱うために、エキスパートが自身のオブジェクトを識別できるようにするための名前が格納されています。また、グローバルに宣言され、文字列の型を持っています。きっと、わかるはず...。 トレーラーの中のトルコ ファイル: win_inform.mq4 1 kb 削除済み 2012.04.11 13:52 #645 自分の機能の小さな問題に直面した。 void mycomment(color c,string mytext) { string name="mycomment"; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet("mycomment", OBJPROP_CORNER, 2); ObjectSet(name,OBJPROP_XDISTANCE,5); ObjectSet(name,OBJPROP_YDISTANCE,7); ObjectSetText(name,mytext,12,"",c); } 例えば、「EAの設定を確認してください。設定ウィンドウを開くにはF7キーを押してください」という行をコメントしようとすると、長いメッセージを切り取ります。 これを残すのみです。"Check your EA settings to open settings window "と表示され、ウィンドウの半分も文字がないにもかかわらず、切れてしまう。 この制限を解除する方法があれば教えてください。 [ARCHIVE!] Any rookie question, Can anyone give me 初心者の方からの質問 MQL4 MT4 MetaTrader Рустам 2012.04.11 14:01 #646 いいえ、ラベルの最大行数=62文字です。 テキストを 複数の行(ラベル)に分けてフォーマット するか、Comment()を使用する - 文字数は255文字です。 Сергей 2012.04.11 14:11 #647 こんにちは。ある(ユーザーが定義した)数の注文を 開く際に問題が発生しました。この問題を解決するために、小さなコードを書きました。しかし、テストの終了間際になると、任意の数のオーダーが開かれることがある。以下は、コードそのものです。 extern string Kolichestvo_orderov = "Количество единовременно открытых ордеров"; extern int OrederBuy = 1; extern int OrederSell = 1; int OrdS=1,OrdB=1,ticketBuy,ticketSell,lastticketSell=0,lastticketBuy=0; //========================================================================================================// //---- Открытие ордеров SELL ----// //========================================================================================================// if(OrdS<=OrederSell) { //----- start if(trendDn==true && SthFast>88.2 && SthSlow<38.2) { ticketSell=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,0,magick,0,Blue);OrdS++; //--- Если ордер открыт параметр OrdS увеличиваю } } //-----end //========================================================================================================// //----Открытие ордеров BUY ----// //========================================================================================================// if(OrdB<=OrederBuy) { //-----start if(trendUp==true && SthFast<11.8 && SthSlow>61.8) { ticketBuy=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,0,magick,0,Red);OrdB++; //--- Если ордер открыт параметр OrdB увеличиваю } } //------end //------------------------------- Подсчет количества ордеров BUY & SELL ----------------------------------// if(ticketBuy<=OrdersHistoryTotal()) //------ проверка тикетов тех ордеров которые уже закрыты { for(int ordBuy=lastticketBuy;ordBuy<=OrdersHistoryTotal();ordBuy++) //--- перебор новых закрытых ордеров { if(OrderSelect(ordBuy,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_BUY)OrdB--;lastticketBuy=ticketBuy;} //--- если добавился новый закрытый ордер бай, то параметр OrdB уменьшаю } } //----- if(ticketSell<=OrdersHistoryTotal()) //------ проверка тикетов тех ордеров которые уже закрыты { for(int ordSell=lastticketSell;ordSell<=OrdersHistoryTotal();ordSell++) //--- перебор новых закрытых ордеров { if(OrderSelect(ordSell,SELECT_BY_POS,MODE_HISTORY)==true){if(OrderType()==OP_SELL)OrdS--;lastticketSell=ticketSell;} //--- если добавился новый закрытый ордер селл, то параметр OrdS уменьшаю もっとシンプルな解決策があれば、コメントをいただければと思います。 Artyom Trishkin 2012.04.11 14:13 #648 Lians: 自分の機能の小さな問題に直面した。 void mycomment(color c,string mytext) { string name="mycomment"; if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0); ObjectSet("mycomment", OBJPROP_CORNER, 2); ObjectSet(name,OBJPROP_XDISTANCE,5); ObjectSet(name,OBJPROP_YDISTANCE,7); ObjectSetText(name,mytext,12,"",c); } 例えば、「EAの設定を確認してください。設定ウィンドウを開くにはF7キーを押してください」という行をコメントしようとすると、長いメッセージを切り取ります。 これを残すのみです。"Check your EA settings to open settings window "と表示され、ウィンドウの半分も文字がないにもかかわらず、切れてしまう。 この制限を解除する方法があれば教えてください。 私の機能を試してみてください。このページのあなたの投稿の上にあります。文字列を複数の文字列に分割し、各文字列の長さが64文字以下になるようにする。私の関数は、これらの分割された行を1つずつ上に出力します。そして、次のメッセージを表示するときに、上の古いメッセージをグレースケール化し、新しいメッセージを私の関数を呼び出したときに設定した色で表示するのです。 Григорий 2012.04.11 14:38 #649 履歴をダウンロードしたところ、偶然にも2012.01.16から2012.03.20までのUSDJPYに穴が開いていることが判明しました。再ダウンロードしようとしたら、端末が「履歴が全部残っている」と答えた。 このギャップを埋めるにはどうしたらいいのか? 履歴を穴なくアップロードするにはどうしたらよいですか? また、履歴に穴が開いているかどうかを確認する方法はありますか? 削除済み 2012.04.11 14:38 #650 artmedia70: 私の機能を試してみてください。このページのあなたの投稿の上にあります。文字列を複数の文字列に分割し、各文字列の長さが64文字以下になるようにする。私の関数は、これらの分割された行を1つずつ上に出力します。そして、次のメッセージを表示するときに、上の古いメッセージをグレースケール化し、新しいメッセージを私の関数を呼び出したときに設定した色で表示するのです。 ありがとうございます。しかし、私にとっては少し複雑で、あなたの関数は一度に4つのメッセージを出力しますが、私は1つのメッセージを必要とします。1行に64文字以内であることが判明? 1...585960616263646566676869707172...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ロール さん、ありがとうございます。ここに、チャートの 左下にコメントを表示する機能がありますので、必要な方がいらっしゃいましたら、ご利用ください。
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
みなさん、こんにちは。
のように、グラフ上にテキストを表示することは可能かどうか教えてください。
を別の関数として出力し、このように呼び出すことができます。
この機能を見てください。
チャート上に空のWin_Informインジケータウィンドウを探し、存在すればその中にメッセージを表示します。そうでない場合は、printで出力します。
コール例
グローバルレベルで宣言された配列文字列 Mass_Name_Message[10] を使用します。オブジェクト名を格納するための配列である。用途に合わせて大きさを変えることができます。Prefix変数には、グラフィカルなオブジェクトを 正しく扱うために、エキスパートが自身のオブジェクトを識別できるようにするための名前が格納されています。また、グローバルに宣言され、文字列の型を持っています。きっと、わかるはず...。
トレーラーの中のトルコ
自分の機能の小さな問題に直面した。
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
例えば、「EAの設定を確認してください。設定ウィンドウを開くにはF7キーを押してください」という行をコメントしようとすると、長いメッセージを切り取ります。
これを残すのみです。"Check your EA settings to open settings window "と表示され、ウィンドウの半分も文字がないにもかかわらず、切れてしまう。
この制限を解除する方法があれば教えてください。
いいえ、ラベルの最大行数=62文字です。
テキストを 複数の行(ラベル)に分けてフォーマット するか、Comment()を使用する - 文字数は255文字です。
以下は、コードそのものです。
もっとシンプルな解決策があれば、コメントをいただければと思います。
自分の機能の小さな問題に直面した。
void mycomment(color c,string mytext)
{
string name="mycomment";
if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
ObjectSet("mycomment", OBJPROP_CORNER, 2);
ObjectSet(name,OBJPROP_XDISTANCE,5);
ObjectSet(name,OBJPROP_YDISTANCE,7);
ObjectSetText(name,mytext,12,"",c);
}
例えば、「EAの設定を確認してください。設定ウィンドウを開くにはF7キーを押してください」という行をコメントしようとすると、長いメッセージを切り取ります。
これを残すのみです。"Check your EA settings to open settings window "と表示され、ウィンドウの半分も文字がないにもかかわらず、切れてしまう。
この制限を解除する方法があれば教えてください。
このギャップを埋めるにはどうしたらいいのか?
履歴を穴なくアップロードするにはどうしたらよいですか?
また、履歴に穴が開いているかどうかを確認する方法はありますか?
私の機能を試してみてください。このページのあなたの投稿の上にあります。文字列を複数の文字列に分割し、各文字列の長さが64文字以下になるようにする。私の関数は、これらの分割された行を1つずつ上に出力します。そして、次のメッセージを表示するときに、上の古いメッセージをグレースケール化し、新しいメッセージを私の関数を呼び出したときに設定した色で表示するのです。