[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 697

 
rensbit:
アンカーの角度は、ウィンドウ内のオブジェクトの位置をどの角度からカウントするかということです。角度は左から時計回りに数えます。

右下にスナップする場合、負の座標を設定すればいいのですか?
 
valenok2003:

右下にスナップする場合、負の座標を設定するのでしょうか?
いいえ、正の座標は、端末が勝手に目的の点を計算します。例えば、こんな感じです。第2コーナーから15ピクセル
 
Azerus:

アドバイスをお願いします。

連続するイベントの数(例えば、終値が始値より高い、またはその逆のバーの数)を計算するためには、次のようにしか思いつきませんでした。

(1)連続したシリーズが停止した場合、カウンターの読み取りをリセットする方法、(2)Buffer[i]を正しく書き込む方法、つまり結果自体を「見る」にはどうすればよいのか?

例えば、あるバーのインジケータが「-3」を示した場合、それは3本連続で始値より下に閉じたことを意味し、その次のバーが始値の上に閉じた場合、インジケータは「1」を示す・・・・・・。

int i=Bars-1

while (i > 0) {

int x=0;

int y=0;

if ( Close[i] > Open[i] ) { x++ ;

Buf [i]=x; }.

if (Close[i] < Open[i] ) { y-- ;

Buf2[i] =y ; }.

i--;

}

 
rensbit:
いいえ、正の座標では、端末が自ら目的のポイントを計算します。例えば、こんな感じです。2コーナーから15ピクセル
ありがとうございます、うまくいきました。
 
artmedia70:
推測されないように、コードを表示する


ゴーランドプログラムで作られた、あなたのマーチンを加えたもの。

//+------------------------------------------------------------------+
//| 著作権 2005, Gordago Software Corp.
//| http://www.gordago.com/ |
//| バージョン2.0
//+------------------------------------------------------------------+

#property copyright"著作権 2005, Gordago Software Corp."
#プロパティリンク "http://www.gordago.com"

#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 218650

extern string sNameExpert = "ゴルダゴから生成する";
extern int nAccount =0;
extern double dBuyStopLossPoint = 0;
extern double dSellStopLossPoint = 0;
extern double dBuyTakeProfitPoint = 0;
extern double dSellTakeProfitPoint = 0;
extern double dBuyTrailingStopPoint = 0;
extern double dSellTrailingStopPoint = 0;
extern double Lot = 0.10;
extern int nSlippage = 30;
extern bool lFlagUseHourTrade = True。
extern inttern nFromHourTrade = 0;
extern intToHourTrade = 23;
extern bool lFlagUseSound = False;
extern string sSoundFileName = "alert.wav";
外部カラー colorOpenBuy = Blue;
extern colorCloseBuy = Aqua;
extern colorOpenSell = Red;
extern colorCloseSell = Aqua;


void deinit() {
Comment(")です。
}

//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){。
if (!(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)){
Comment("貿易の時間はまだ来ていない!");
return(0)です。
}
}

if(バー < 100){
Print("bars less than 100");
return(0)です。
}

if(nAccount > 0 && nAccount != AccountNumber(){)
Comment("取引口座:"+AccountNumber()+"FORBIDDEN!");
return(0)です。
}

if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) |||)
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){ (dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)
Print("StopLossが" + MIN_STOPLOSS_POINTより小さい);
return(0)です。
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) |||)
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){ (dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)
Print("TakeProfitが" + MIN_TAKEPROFIT_POINTより小さい);
return(0)です。
}

double diOpen0=iOpen(NULL,60,0);
double d1=(0.00030);
double diHigh2=iHigh(NULL,60,0);
double diOpen3=iOpen(NULL,60,0);
double d4=(0.00030)です。
double diLow5=iLow(NULL,60,0);
double diOpen6=iOpen(NULL,60,1);
double diClose7=iClose(NULL,60,1);
double diOpen8=iOpen(NULL,60,2);
double diClose9=iClose(NULL,60,2)。
double diOpen10=iOpen(NULL,60,0);
double d11=(0.00030);
double diHigh12=iHigh(NULL,60,0);
double diOpen13=iOpen(NULL,60,0);
double d14=(0.00030);
double diLow15=iLow(NULL,60,0)。
double diOpen16=iOpen(NULL,60,1);
double diClose17=iClose(NULL,60,1)。
double diOpen18=iOpen(NULL,60,2);
double diClose19=iClose(NULL,60,2);


if(AccountFreeMargin() < (1000*Lot)){。
Print("We have no money.フリーマージン = " + AccountFreeMargin()");
return(0)です。
}

bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false;

lFlagBuyOpen = (diOpen0+d1>diHigh2 && diOpen3-d4<diLow5 && diOpen6<diClose7 && diOpen8>diClose9) とする。
lFlagSellOpen = (diOpen10+d11>diHigh12 && diOpen13-d14<diLow15 && diOpen16>diClose17 && diOpen18<diClose19);
lFlagBuyClose = Falseとする。
lFlagSellClose = Falseとする。

if (!ExistPositions(){)

if (lFlagBuyOpen){ { (lFlagBuyOpen)
OpenBuy()です。
{ return(0);
}

if (lFlagSellOpen){。
OpenSell()です。
return(0)です。
}
}
if(ExistPositions()){。
if(OrderType()==OP_BUY){。
if(lFlagBuyClose){。
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy);
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName)を実行します。
return(0)です。
}
}
if(OrderType()==OP_SELL){。
if(lFlagSellClose){。
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell)とする。
if (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName)を実行します。
return(0)です。
}
}
}

if (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){ if (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0)

for (int i=0; i<OrdersTotal(); i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
bool lMagic = trueです。
if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = falseです。

if (OrderSymbol()==Symbol() && lMagic) {.
if (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {。
if (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {。
if (OrderStopLoss()<Bid-dBuyTrailingStopPoint*ポイント)
ModifyStopLoss(Bid-dBuyTrailingStopPoint*Point)。
}
}
if (OrderType()==OP_SELL) { (オーダータイプ==OP_SELL)
if (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) { (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point)
if (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifyStopLoss(Ask+dSellTrailingStopPoint*Point)。
}
}
}
}
}
}
を返します(0)。
}

bool ExistPositions() { (ブールエグジストポジションズ)
for (int i=0; i<OrdersTotal(); i++){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
bool lMagic = trueです。

if (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = falseです。

if (OrderSymbol()==Symbol() && lMagic) {.
return(True)です。
}
}
}
return(false)です。
}

void ModifyStopLoss(double ldStopLoss) { (修正ストップロス)
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE)です。
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName)を実行します。
}

//+----------------------------------------------------------------------------+
//| 作成者 : Kim Igor V. aka KimIV, http://www.kimiv.ru||Google Play!
//+----------------------------------------------------------------------------+
| バージョン:2008年2月19日
//| 説明 : 最後の位置が失われたことを示すフラグを返す。
//+----------------------------------------------------------------------------+
//| パラメータ: |
//| sy - 楽器の名前 (" - 任意のシンボル, |)
//| NULL - 現在のシンボル)
| //| op - 操作 (-1 - 任意の位置)
//| mn - MagicNumber (-1 - 任意のマジック) |.
//+----------------------------------------------------------------------------+
bool isLossLastPos(string sy="", int op=-1, int mn=-1) {.
datetime t;
int i, j=-1, k=OrdersHistoryTotal()です。

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {.
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
if (OrderSymbol()==sy || sy=="){
if (OrderType()==OP_BUY || OrderType()==OP_SELL) { (オーダータイプ()==OP_BUY)
if (op<0 || OrderType()==op) { }.
if (mn<0 || OrderMagicNumber()==mn) {.
if (t<OrderCloseTime()){
t=OrderCloseTime()。
j=iとする。
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)){
if (オーダープロフィット()<0) return(True)
}
return(False)です。
}





void OpenBuy(){。
double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;

if (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lots_New = Lot;


if (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point;

if (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point;

int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy).OrderSendを実行します。

if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName)を実行します。
}

void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;

if (isLossLastPos(NULL, -1, MAGIC))
Lots_New *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lots_New = Lot;

if (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point;

if (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point;

int numorder = OrderSend(Symbol(,OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);

if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName)を実行します。
}

 
valenok2003:

例題で修正しても構わないのであれば、なぜかうまくいかないのですが。
      ObjectSetText("info", str3, fontsize, fontname);
      ObjectSet("info", OBJPROP_CORNER, corner);
      ObjectSet("info", OBJPROP_XDISTANCE, xdistance);
      ObjectSet("info", OBJPROP_YDISTANCE, ydistance);
      ObjectSet("info", OBJPROP_COLOR, clr);

可変コーナーは外付けにしました(便宜上)。座標の算出元となるコーナーの番号が記載されています

 
Roger:


で置き換えてみてください。

if (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po||OrderStopLoss()==0)

まで

if (OrderStopLoss()>pp-(TStop.Buy+TrailingStep-1)*po||OrderStopLoss()==0)

Roger、ありがとうございます。しかし、まだ正しく動作しません。もう一回トロールしてみましたが、エラーはそのままです :( 1つのポーズをトロールするのと、複数のポーズを同時にトロールするのとでは、何か違いがあるのでしょうか?
 
rensbit:

コーナーの変数を外付けにしました(便宜上)。座標の算出元となるコーナーの番号が記載されています

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

もう1つ質問です。Wingdingsからコメントへ正しく記号を挿入する方法。

 
どの記号?
 
rensbit:
どの記号?

著作権