وسائل لوڈ ہو رہے ہیں... لوڈنگ...

bybit swap مستقل ہولڈنگ کی حکمت عملی

مصنف:gulishiduan_ ہائی فریکوئنسی ترتیب، تاریخ: 2020-05-07 22:20:01
ٹیگز:

// حال ہی میں دوستوں نے جواب دیا ہے کہ ایک چھوٹا سا بگ ہے ، پہلے ٹیسٹ نیٹ۔ ؛ پیرامیٹرز کو ضرورت کے مطابق آزادانہ طور پر ایڈجسٹ کیا جاسکتا ہے۔ ؛ حکمت عملی کی اصل یہ ہے کہ k لائن کی کٹوتی کی قیمتوں کا تعین کرنے کے لئے خالی جگہ کا تعین کیا جائے ، جس کا مطلب یہ ہے کہ اوسط لائن کے موڑ کے ذریعے ، حقیقی وقت میں سگنل کا پتہ لگانے کے لئے۔ // نیا اکاؤنٹ بنانے کے لیے، میرا رجسٹریشن لنک استعمال کریں:https://www.bytick.com/zh-CN/register/?affiliate_id=7586&language=en&group_id=0&group_type=2// یہ لنک تھری پارٹیز کو جوڑنے کی کئی حکمت عملی فراہم کرتا ہے۔// // بنیادی اصول: اگر k لائن مسلسل اوپر کی طرف بڑھتی ہے تو ، اس کی زیادہ سے زیادہ پوزیشن تک بڑھتی رہتی ہے۔//

// اگر طویل: خالی سرے کی مارکیٹ کے لئے موزوں نہیں ، لیکن گرنے کے دوران زیادہ پوزیشنوں میں مسلسل اضافہ نہیں ہوگا۔// // اگر مختصر: ایک سے زیادہ مارکیٹوں کے لئے موزوں نہیں ہے، لیکن بڑھتی ہوئی قیمتوں میں مسلسل اضافہ نہیں ہوتا ہے۔

// توجہ مرکوز کریں، زیادہ خالی جگہیں بھی دو اکاؤنٹس کے ساتھ کھولی جا سکتی ہیں.

// خریدنے کے لئے دیگر حکمت عملی: weixin:ying5737 // اپنے آپ کو جوڑنے والے تبادلے کی ضرورت ہوتی ہے۔ / سیمالٹ اکاؤنٹس کی پیشگی جانچ۔ خطرہ برداشت پر توجہ دیں

// دن کی روشنی کی سطح، یا حلقہ کی سطح، ہم دن کی روشنی کی مثال کے طور پر استعمال کرتے ہیں. // ma5ma10 کا پتہ لگانے کے لئے ، k لائن کی اختتامی قیمت ma5 ، ma10 سے اوپر ہے ، اور ma5 اوپر ہے ((کل کی لائن کی اختتامی قیمت > پچھلے نمبر کی 5 ویں جڑ کی اختتامی قیمت کا فیصلہ کریں) ، پھر روزانہ کھولنے کے لئے بندش کا حکم دیں یا 500u کو براہ راست خریدیں ، جاری رکھیں ، جاری رکھیں اور بڑھائیں۔ // اضافہ، اگر اوپر کی چوٹی میں دو سلسلے کی لائنیں ظاہر ہوں تو، تیسرے دن 500 یو اضافہ خریدیں۔ ہر دو سلسلے کی الگ الگ اعداد و شمار۔

// فروخت، K لائن ٹرپلین ہولڈر 1000u میں کمی. // مسلسل چکر لگانا۔ // حکمت عملی چل رہا ہے، 13 دن ((یا 21 دن) ، خود کار طریقے سے روکنے کے لئے، صفائی یا صفائی پوزیشنوں اور احکامات. // زیادہ سے زیادہ ہولڈنگ 5000u اس پوزیشن سے زیادہ ہے صرف کم ہو رہی ہے۔

اوپر:

https://wx1.sinaimg.cn/mw1024/c5775633ly1gbsjvtrgnhj20m80dmmxy.jpg https://wx1.sinaimg.cn/mw1024/c5775633ly1gbsjvty48uj21hc0u077o.jpg https://wx2.sinaimg.cn/mw1024/c5775633ly1gbsjvu4iipj20lr0h775f.jpg

چین فریکوئنسی کی یکطرفہ رجحانات کی حکمت عملی

نگرانی متغیر

  1. تیز ایم اے
  2. سست ایم اے
  3. اختتامی قیمت

ترتیب کے پیرامیٹرز

  1. ایک بار میں ایک مقدار جمع کریںAmount
  2. ایک بار اسٹاک میں کمی CloseAmount
  3. زیادہ سے زیادہ ذخائر MaxPosition

زیادہ کریں

ضروریات

  1. k لائن بند ہونے کی قیمت تیز ایم اے اور سست ایم اے سے زیادہ ہے
  2. اور تیزی سے MA اوپر (یہ فیصلہ کرنے کے لئے کہ کل کی لائن کی اختتامی قیمت پچھلے نمبر کی 5 ویں لائن کی اختتامی قیمت سے زیادہ ہے)

ذیل میں

  1. تین لیونگ، کم اسٹاک CloseAmount
  2. دو سلسلہ منفی، جمع Amount. یعنی دو سلسلہ منفی پیدا ہو جائے گا 2 * رقم.
  3. عام طور پر، اکاؤنٹ کھولیںAmount

حدود

  1. زیادہ سے زیادہ ہولڈنگ زیادہ سے زیادہ پوزیشن نہیں ہے

باہر نکلنا

  1. لائن K کو چلانے کے بعد باہر نکلیں

خالی کرنا

ضروریات

  1. k لائن بند ہونے کی قیمت تیز ایم اے اور سست ایم اے سے کم ہے
  2. اور تیزی سے ایم اے اوپر کی طرف بڑھ رہا ہے ((جیسے کل کی لائن کی اختتامی قیمت پچھلے نمبر N سے کم ہے ((فوری ایم اے سائیکل) جڑ کی اختتامی قیمت)

ذیل میں

  1. تین سیریز منفی، کم اسٹاک CloseAmount
  2. دو سلسلے، جمع جمع Amount. یعنی دو سلسلے پیدا ہوتے ہیں جن میں 2*Amount جمع ہوتا ہے۔
  3. عام طور پر، اکاؤنٹ کھولیںAmount

حدود

  1. زیادہ سے زیادہ ہولڈنگ زیادہ سے زیادہ پوزیشن نہیں ہے

باہر نکلنا

  1. لائن K کو چلانے کے بعد باہر نکلیں

نوٹ

  1. پروگرام ہر بار اکاؤنٹ کے ذخائر کی معلومات حاصل کرتا ہے حکمت عملی کے طور پر ذخائر کی مقدار.
  2. براہ کرم fmz ویکیپیڈیا کو پابند کریں ، پروگرام اہم جگہ پر ویکیپیڈیا کو آگے بڑھا سکتا ہے۔

پیرامیٹرز

  1. تیز ایم اے سائیکل
  2. سست ایم اے سائیکل
  3. سوال کے وقفے (ms)
  4. کثیر خالی انتخاب
  5. لیور کا سائز: 0 کا مطلب ہے پورے اسٹاک کی شکل
  6. معاہدہ کی قسم: فی الحال fmex صرف swap کی حمایت کرتا ہے، صرف swap بھرا جا سکتا ہے۔ جب دوبارہ جانچ پڑتال کی جاتی ہے تو OKEx دوبارہ جانچ پڑتال کی جاسکتی ہے، جہاں اسے this_week، this_month وغیرہ کے طور پر مقرر کیا جاسکتا ہے۔
  7. ایک بار کم کرنے والا حجم۔ جب کم کرنے کی شرط پوری ہوجائے تو ایک بار کم کرنے والا حجم۔
  8. زیادہ سے زیادہ ذخیرہ ((u)
  9. API بیس ایڈریس؛ http://api.fmex.com، یا https://api.testnet.fmex.com پر سیٹ کیا جا سکتا ہے
  10. حکمت عملی K کی تعداد سے باہر نکلیں۔ حکمت عملی کے کتنے K لائنز چلنے کے بعد عام طور پر باہر نکلیں
  11. اسٹریٹجک طور پر باہر نکلنے کے بعد کیا صفائی کی جائے گی۔
  12. کیا بات چیت کی ضرورت ہے؟ ؛ پالیسی باہر نکلنے کی شرط کو پورا کرنے کے بعد ، معمول سے باہر نکلتی ہے۔ اگر بات چیت کی ضرورت ہے تو ، یہ دستی مداخلت وغیرہ کے احکامات کا انتظار کرے گا۔ اگر ضرورت نہیں ہے تو ، پروگرام براہ راست باہر نکل جاتا ہے۔
  13. کیا خریدنا ہے۔ منتخب کریں ، تو نیچے کی فہرست مارکیٹ کی قیمت کی فہرست ہے ، منتخب نہ کریں ، تو گرنے کی فہرست ہے ، خریدنے میں گرنے والی ، فروخت کرنے میں گرنے والی۔
  14. مسلسل یگ () K لائن نمبر ((زیادہ وقت ، مسلسل یگ) ؛ کم کرنے کا اشارہ ، جیسے زیادہ وقت ، مسلسل یگ ، کم کرنا
  15. لگاتار کین (انگ) K لائن کی تعداد ((زیادہ کام کرنے پر ، لگاتار کین) ؛ لگاتار کین (انگ) K لائن کی تعداد ((زیادہ کام کرنے پر ، لگاتار کین)
  16. کیا یہ ایک ہلچل ہے؟

بات چیت

صرف ایک ہی بات چیت是否需要交互وقت پر مؤثر بات چیت اس وقت ہوتی ہے جب حکمت عملی معمول سے باہر نکل جاتی ہے۔

  1. جاری رکھیں۔ جاری رکھنا پالیسی کو دوبارہ ترتیب دینا ہے ، اسی پیرامیٹرز کو دوبارہ چلانا ہے۔
  2. روکیں۔ حکمت عملی روکیں باہر نکلیں
  3. سوئچنگ کی حکمت عملی مارکیٹ کے بعد جاری رہتی ہے۔ سوئچنگ مارکیٹ میں ہلچل یا رجحان کے بعد چلتی رہتی ہے ، جو انٹرایکٹو 1 ٹن کی ایک توسیع ہے


/*联系微信:ying5737(策略讨论,支持付费编写)
# 中频单边趋势策略
## 监测变量
1. 快MA
2. 慢MA
3. 收盘价
## 配置参数
1. 单次下单量Amount
2. 单次减仓量CloseAmount
3. 最大持仓量MaxPosition
## 做多
### 必要条件
1. k线收盘价大于快MA与慢MA
2. 且快MA上行(判断为昨日k线收盘价大于往前数第5根k收盘价)
### 下单
1. 三连阳,减仓CloseAmount
2. 两连阴,加仓Amount。也就是出现两连阴会下单2*Amount
3. 正常情况,开单Amount
### 限制
1. 最大持仓量大于MaxPosition则不开单
### 退出
1. 运行N根K线之后退出

## 做空
### 必要条件
1. k线收盘价小于快MA与慢MA
2. 且快MA下行(判断为昨日k线收盘价小于往前数第N(快MA5周期)根k收盘价)
### 下单
1. 三连阴,减仓CloseAmount
2. 两连阳,加仓Amount。也就是出现两连阴会下单2*Amount
3. 正常情况,开单Amount
### 限制
1. 最大持仓量大于MaxPosition则不开单
### 退出
1. 运行N根K线之后退出
## 注意事项
1. 程序会每次会获取账户的持仓信息做为策略的持仓量
2. 请绑定fmz微信,程序会重要的地方推送微信
## 参数
1. 快MA周期
2. 慢MA周期	
3. 轮询间隔(ms)	
4. 多空选择
5. 杠杆大小: 0表示全仓模式
6. 合约类型: 目前fmex只支持swap,只能填写swap。回测时可用OKEx回测,此处可设置为this_week, this_month等
7. 单次减仓量。达到减仓条件时,一次减仓量
8. 最大持仓(u)
9. API基地址。可设置为https://api.fmex.com,或测试网https://api.testnet.fmex.com
10. 策略K数退出. 策略运行多少个K线后正常退出
11. 策略主动退出时是否清仓。
12. 是否需要交互。策略在满足退出条件后,正常退出时。如果需要交互,则会等待人工干预等命令。如果不需要,则程序直接退出了
13. 是否吃单。勾选,则下单是市价单,不勾选,则是挂单,买单挂在买一,卖单挂在卖一
14. 连续阳(阴)K线数(做多时,连续阳线)。减仓信号,如做多时,连续阳线,减仓
15. 连续阴(阳)K线数(做多时,连续阴线)。连续阴(阳)K线数(做多时,连续阴线)	
16. 是否是震荡行情。勾选是震荡行情
## 交互
**交互只有在`是否需要交互`时有效**
**交互是在策略正常退出时进行交互**
1. 继续。继续是策略复位,重新运行相同的参数
2. 停止。策略停止退出
3. 切换策略行情后继续.切换行情为震荡或趋势后继续运行,是交互1'继续'的一种扩展
*/
////////////////// params ////////////////////////
//var fastMaPeriod = 5
//var slowMaPeriod = 10
//var direction = 做多|做空
//var interval = 1000
//var amount = 500
//var maxHoldAmount = 5000
//var closeAmount = 1000
//var runNBars = 13
//var marginLevel = 0
//var contractType = 'swap'
//var enableCommand = false
//var isTaker = true
//var maxOppositeDirKNum = 2
//var maxSameDirKNum = 3
//var isShock = false
////////////////// variable ////////////////////////

var makeLong = direction == 0 ? true:false
var startTime = null
var holdAmount = 0
var lastBar = null
var yinxianCnt = 0
var yangxianCnt = 0
var lastClose = 0
var last5thClose = 0
var fastMa = []
var slowMa = []
var barCnt = 0
var localIsShock = false
////////////////////////////////////////////////
var PreBarTime = 0
var isFirst = true

function PlotMA_Kline(records){
    $.PlotRecords(records, 'K')
    if(fastMa.length == 0) {
        fastMa = TA.MA(records, fastMaPeriod)
    }
    if(slowMa.length == 0) {
        slowMa = TA.MA(records, slowMaPeriod)
    }
    if(isFirst){
        $.PlotFlag(records[records.length - 1].Time, 'Start', 'STR')
        for(var i = records.length - 1; i >= 0; i--){
            if(fastMa[i] !== null){
                $.PlotLine('ma'+fastMaPeriod, fastMa[i], records[i].Time)
            }
            if(slowMa[i] !== null){
                $.PlotLine('ma'+slowMaPeriod, slowMa[i], records[i].Time)
            }
        }
        PreBarTime = records[records.length - 1].Time
        isFirst = false
    } else {
        if(PreBarTime !== records[records.length - 1].Time){
            $.PlotLine('ma'+fastMaPeriod, fastMa[fastMa.length - 2], records[fastMa.length - 2].Time)
            $.PlotLine('ma'+slowMaPeriod, slowMa[slowMa.length - 2], records[slowMa.length - 2].Time)
            PreBarTime = records[records.length - 1].Time
        }
        $.PlotLine('ma'+fastMaPeriod, fastMa[fastMa.length - 1], records[fastMa.length - 1].Time)
        $.PlotLine('ma'+slowMaPeriod, slowMa[slowMa.length - 1], records[slowMa.length - 1].Time)
}
}

function init () {
    if (fastMaPeriod > slowMaPeriod) {
        throw '快MA周期 > 慢MA周期, 请检查设置'
    }
    Log('快MA周期	    :'  + fastMaPeriod)
    Log('慢MA周期	    :' + slowMaPeriod)
    Log('轮询间隔(ms)   :' + interval)
    Log('是否是震荡策略  :' + (isShock?'是':'否'))
    Log('多空选择	    :' + (direction == 0 ? '多':'空'))
    Log('杠杆大小	    :' + (marginLevel == 0 ? '全仓':marginLevel))
    Log('连续阳(阴)K线数(做多时,连续阳线)数   :' + maxSameDirKNum)
    Log('连续阴(阳)K线数(做多时,连续阴线)   :' + maxOppositeDirKNum)
    Log('运行多少根K后退出   :' + runNBars)
    startTime = new Date()
    localIsShock = isShock
}

function onexit() {
    Log('退出')
}

function onerror() {
    Log('出错退出')
}

function openLong(ex, openAmount) {
    if (holdAmount + openAmount <= maxHoldAmount) {
        Log('已持仓: ' + holdAmount + ', 加仓:' + openAmount)
        ex.SetDirection('buy')
        if(isTaker) {
            ex.Buy(-1, openAmount, '吃单')
            holdAmount += openAmount
        } else {
            var ticker = _C(ex.GetTicker)
            if(ticker == null) {
                return false
            }
            ex.Buy(ticker.Buy, openAmount, '挂单')
        }
        return true
    } else {
        Log('持仓('+holdAmount+') 过多,不加仓')
        return false
    }
}

function closeLong(ex, closeAmount) {
    if (holdAmount >= closeAmount) {
        Log('已持仓: ' + holdAmount + ', 减仓:' + closeAmount)
        ex.SetDirection('closebuy')
        ex.Sell(-1, closeAmount)
        holdAmount -= closeAmount
        return true
    } else {
        Log('持仓('+holdAmount+') 过少,不减仓')
        return false
    }
}

function openShort(ex, openAmount) {
    if (holdAmount + openAmount <= maxHoldAmount) {
        Log('已持仓: ' + holdAmount + ', 加仓:' + openAmount)
        ex.SetDirection('sell')
        if(isTaker) {
            ex.Sell(-1, openAmount, '吃单')
            holdAmount += openAmount
        } else {
            var ticker = _C(ex.GetTicker)
            if(ticker == null) {
                return false
            }
            ex.Sell(ticker.Sell, openAmount, '挂单')
        }
        return true
    } else {
        Log('持仓('+holdAmount+') 过多,不加仓')
        return false
    }
}

function closeShort(ex, closeAmount) {
    if (holdAmount >= closeAmount) {
        Log('已持仓: ' + holdAmount + ', 减仓:' + closeAmount)
        ex.SetDirection('closesell')
        ex.Buy(-1, closeAmount)
        holdAmount -= closeAmount
        return true
    } else {
        Log('持仓('+holdAmount+') 过少,不减仓')
        return false
    }
}

function cancelOrders(ex) {
    Log('取消所有挂单')
    while(true) {
        var orders = _C(ex.GetOrders)
        if (orders.length == 0) {
            break
        }
        for(var i = 0; i < orders.length;i++) {
            ex.CancelOrder(orders[i].Id)
        }
    }
}

function updatePosition(ex) {
    var pos = ex.GetPosition()
    if(typeof(pos) === 'undefined' || pos === null || 
        pos.length == 0 || typeof(pos[0].Type) == 'undefined'  || typeof(pos[0].Amount) == 'undefined' ) {
        return
    }
    Log('仓位信息:' + (pos[0].Type == 0?'多仓,   ':'空仓,  ') + JSON.stringify(pos))
    if(pos.length>0){
        holdAmount = pos[0].Amount
        // if(pos[0].Type == 0){ //多仓
        //     ordersInfo.pos = pos[0].Amount
        // }else{
        //     ordersInfo.pos = -pos[0].Amount
        // }
    }
}

function longStrategy(ex, records) {
    var lastSecondBar = records[records.length-2]

    if ((   lastSecondBar.Close > fastMa[fastMa.length - 2] && 
            lastSecondBar.Close > slowMa[slowMa.length - 2] && 
            lastSecondBar.Close > records[records.length - 2 - fastMaPeriod].Close
        ) || localIsShock){
            var openAmount = amount
            if (lastSecondBar.Close < lastSecondBar.Open) {
                yinxianCnt += 1
                yangxianCnt = 0
            } else if (lastSecondBar.Close > lastSecondBar.Open){
                yinxianCnt = 0
                yangxianCnt += 1
            } else {
                yangxianCnt = 0
                yinxianCnt = 0
            }

            if (yinxianCnt >= maxOppositeDirKNum) {
                Log('两连阴')
                openAmount += amount
                yinxianCnt = 0
            }

            if (yangxianCnt >= maxSameDirKNum) {
                Log('三连阳')
                yangxianCnt = 0
                Log('准备减仓')
                if(closeLong(ex, closeAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'closeLong', 'CL')
                }
            } else {
                Log('准备开仓')
                if(localIsShock) {
                    openAmount -= amount
                }
                if(openLong(ex, openAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'openLong', 'OL')
                }
            }
    }
}

function shortStrategy(ex, records) {
    var lastSecondBar = records[records.length-2]

    if ((   lastSecondBar.Close < fastMa[fastMa.length - 2] && 
            lastSecondBar.Close < slowMa[slowMa.length - 2] && 
            lastSecondBar.Close < records[records.length - 2 - fastMaPeriod].Close
        ) || localIsShock){
            var openAmount = amount
            if (lastSecondBar.Close < lastSecondBar.Open) {
                yinxianCnt += 1
                yangxianCnt = 0
            } else if (lastSecondBar.Close > lastSecondBar.Open){
                yinxianCnt = 0
                yangxianCnt += 1
            } else {
                yangxianCnt = 0
                yinxianCnt = 0
            }

            if (yangxianCnt >= maxOppositeDirKNum) {
                Log('两连阳')
                yangxianCnt = 0
                openAmount += amount
            } 

            if (yinxianCnt >= maxSameDirKNum) {
                Log('三连阴')
                yinxianCnt = 0
                Log('准备减仓')
                if(closeShort(ex, closeAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'closeShort', 'CS')
                }
            } else {
                Log('准备开仓')
                if(localIsShock) {
                    openAmount -= amount
                }
                if(openShort(ex, openAmount)){
                    $.PlotFlag(records[records.length - 1].Time, 'openShort', 'OS')
                }
            }
    }
}

function onBar (ex) {
    var records = _C(ex.GetRecords)
    if (records === null || records.length < slowMaPeriod) {
        return 
    }
    if (lastBar == null) {
        lastBar = records[records.length-1]
    }
    
    if (lastBar.Time == records[records.length-1].Time) {
        return
    }
    lastBar = records[records.length-1]
    updatePosition(ex)
    PlotMA_Kline(records)
    barCnt += 1

    var lastSecondBar = records[records.length-2]
    fastMa = TA.MA(records, fastMaPeriod)
    slowMa = TA.MA(records, slowMaPeriod)
    lastClose = lastSecondBar.Close
    last5thClose = records[records.length - 2 - 5].Close

    Log('收盘价:' +lastSecondBar.Close + 
    ', 前第5个收盘价:' +records[records.length - 2 - 5].Close + 
    ', 快MA:' + _N(fastMa[fastMa.length - 2]) +
    ', 慢MA:' + _N(slowMa[slowMa.length - 2]))
    if (makeLong) {
        longStrategy(ex, records)
    } else {
        shortStrategy(ex, records)
    }
}

function runLife(ex) {
    // var pass = new Date() - startTime
    if (barCnt >= runNBars) {
        if(isCleanPosition) {
            Log('已运行'+barCnt+'K周期,结束,取消订单,清仓#ff0000@')
            cancelOrders(ex)
            updatePosition(ex)
            $.PlotFlag(lastBar.Time, 'Exit', 'EXT')
            
            if (makeLong) {
                closeLong(ex, holdAmount)
            } else {
                closeShort(ex, holdAmount)
            }    
        } else {
            Log('已运行'+barCnt+'K周期,结束,不取消订单,不清仓#ff0000@')
            updatePosition(ex)
            $.PlotFlag(lastBar.Time, 'Exit', 'EXT')
        }
        return true
    } else {
        return false
    }
}

function status() {
    var table = {
        type: 'table',
        title: '信息',
        cols: [
            '运行K数',
            '持仓量',
            '阳线',
            '阴线',
            '收盘价',
            '前第5个收盘价',
            'MA'+fastMaPeriod,
            'MA'+slowMaPeriod,
        ],
        rows: []
      }
      table.rows.push([
            barCnt,
            holdAmount,
            yangxianCnt,
            yinxianCnt,
            lastClose,
            last5thClose,
            fastMa.length == 0 ? 0 : _N(fastMa[fastMa.length - 2]),
            slowMa.length == 0 ? 0 : _N(slowMa[slowMa.length - 2])
      ])
    LogStatus(
        '现在时间:' +_D() +
        '\n启动时间:' +startTime +
        '\n`' +
        JSON.stringify(table)+
        '`\n' +
        '\n托管者版本:' +Version() +
        '\n联系Wechat:ying5737#00ff00' +
        '\nWechat: ying5737info#ff000f'
      )

}

function reset() {
    holdAmount = 0
    lastBar = null
    yinxianCnt = 0
    yangxianCnt = 0
    lastClose = 0
    last5thClose = 0
    fastMa = []
    slowMa = []
    barCnt = 0
}

function main () {
    var ex = exchanges[0]

    Log('开工   '+ex.GetName())
 //   if(ex.GetName() != 'Futures_FMex' && !IsVirtual()) {
  //      throw '仅仅支持FMex'
  //  }
    Log('基地址  ' + baseUrl)
    if(!IsVirtual()){
        ex.IO('base', baseUrl) //切换基地址,方便切换实盘和模拟盘,实盘地址:https://api.fmex.com
    }
    ex.SetTimeout(1000);
    _CDelay(500)
    ex.SetContractType(contractType)
    ex.SetMarginLevel(marginLevel)
    updatePosition(ex)
    while (true) {
        try {
            if(!IsVirtual() && runLife(ex)) {
                if((typeof(GetCommand) == 'function') && enableCommand){
                    Log('等待指令, 继续 | 停止 #ff0000@')
                    while (true) {
                        var cmd = GetCommand()
                        if (cmd) {
                            Log('收到指令: '+cmd)
                            switch(cmd) {
                                case '停止':
                                    Log('停止, 退出!#ff0000@')
                                    return
                                case '继续':
                                    reset()
                                    Log('继续, 复位,开工!#ff0000@')
                                    break
                                case '切换策略行情:0':
                                    reset()
                                    localIsShock = true
                                    Log('切换策略行情为震荡行情继续, 复位,开工!#ff0000@')
                                    break
                                case '切换策略行情:1':
                                    reset()
                                    localIsShock = false
                                    Log('切换策略行情为趋势行情继续, 复位,开工!#ff0000@')
                                    break
                            }
                            if (cmd == '停止'){
                                Log('停止, 退出!#ff0000@')
                                return
                            } else if (cmd == '继续') {
                                reset()
                                Log('继续, 复位,开工!#ff0000@')
                                break
                            }
                        }
                        updatePosition(ex)
                        status()
                        Sleep(1000)
                    }
                } else {
                    Log('停止, 退出!#ff0000@')
                    return
                }
            }
            onBar(ex)
            status()
        } catch(e) {
            Log('出错了:'+e+', 请及时处理#ff0000@')
        }
        Sleep(interval)
    }
}


مزید

gulishiduan_ ہائی فریکوئنسی ترتیبمیں نے اس کے بارے میں بہت کچھ سیکھا ہے۔ میں نے اس کے بارے میں بہت کچھ سیکھا ہے۔

gulishiduan_ ہائی فریکوئنسی ترتیب 沟通//或其他策略购买请咨询:weixin:ying5737

gulishiduan_ ہائی فریکوئنسی ترتیبکچھ عام حکمت عملیوں میں سے کچھ ہیں: 1، پوزیشن مینجمنٹ: کھلی پوزیشن / کل فنڈ فی صد کے ساتھ پوزیشن مینجمنٹ، خاص طور پر کچھ اعلی تعدد / منتقل / درمیانے لمبی لائن کے نظام میں استعمال کرنے کے لئے زیادہ مناسب ہے. یہ پوزیشن کی حکمت عملی بہت اچھی ہے. پوزیشن خود آپ کو خطرے کو منظم کرنے میں مدد کر سکتی ہے. 2، دھماکے کے ماڈل کا اصول یہ ہے کہ ، کرنسی کے عقیدے کا فائدہ اٹھاتے ہوئے: منافع بڑھانا ؛ حکمت عملی ، منافع 20٪ تک پہنچنے کے بعد ، سب کو دھماکے کے دھماکے کے ماڈل کے نام سے جانا جاتا ہے۔ یعنی 20٪ منافع کی بنیاد پر ، تجارت کی رفتار بڑھانے ، آرڈر کی مقدار بڑھانے ، ممکنہ منافع بڑھانے کے لئے ، یقینا potential ممکنہ خطرہ ، منافع 20٪ سے زیادہ دھماکے کے دھماکے کے ماڈل میں بھی بڑھا دیا جائے گا۔ 3، سرمایہ کو دوبارہ لگانا: یہ مشورہ دیا جاتا ہے کہ ماہانہ منافع بخش صورت حال میں سرمایہ کو دوبارہ لگانا۔ مارکیٹ میں بہت سارے ممکنہ خطرات ہیں ، بشمول ایکسچینج کے خطرات وغیرہ۔ اگر آپ نے اپنی مکمل حکمت عملی تیار نہیں کی ہے تو ، اس پر غور کریں: ماہانہ باقاعدگی سے سرمایہ کو دوبارہ لگانا ایک بہت اچھا طریقہ ہے۔ 4، وقت کا انتخاب: روبوٹ کا وقت کا انتخاب کرنے کی حکمت عملی دستی یا موضوعی انضمام ٹریڈنگ کی حکمت عملی سے بہتر ہے۔ بہت سے دوستوں نے حکمت عملی تیار کرتے وقت کوئی وقت کا انتخاب کرنے کا پیرامیٹر نہیں بنایا ، جس کی وجہ سے مارکیٹ کی حرکت یا مارکیٹ کی حالت کے خلاف استعمال ہونے والی کچھ حکمت عملی ، اس حکمت عملی کو استعمال کرنے کے لئے ، بہت کم وقت کا انتخاب کرتے ہیں / یا اتار چڑھاؤ کی شرح کے ذریعہ تجارت کرنے کے بارے میں غور کرتے ہیں ، حکمت عملی کو روکنے اور روکنے کے لئے نہیں کرتے ہیں ، یہ ایک غلط فہمی اور اندھے علاقے ہے۔ اندھے علاقے کا موقع ہے۔